Os sistemas antifraude modernos utilizam uma variedade de métodos para identificar os utilizadores. Uma das principais tecnologias é a impressão digital da rede, que permite reconhecer os dispositivos e as suas caraterísticas ao nível da ligação à rede. Esta abordagem inclui ferramentas como o p0f, JA3, JA4, JARM e a análise dos parâmetros das ligações TLS/SSL. #### História da criação e objetivo das impressões digitais da rede ###### p0f A ferramenta p0f foi criada para analisar passivamente o tráfego de rede e identificar sistemas operativos, configurações e caraterísticas de dispositivos sem comunicação ativa. A sua utilização começou no domínio do diagnóstico de redes, mas mais tarde foi aplicada a sistemas antifraude. ###### JA3 e JA4 Estes métodos surgiram com o objetivo de analisar ligações TLS/SSL. O JA3 gera um hash a partir dos parâmetros de uma mensagem Hello TLS do cliente, enquanto o JA4 gera um hash a partir de uma mensagem Hello do servidor. Isto permite a criação de impressões digitais únicas para clientes e servidores, identificando dispositivos e programas. ###### Impressões digitais da rede como ferramenta em sistemas antifraude As impressões digitais da rede são utilizadas para: - Identificar dispositivos através da análise do seu comportamento na rede. - Identificar tráfego de rede suspeito ou invulgar. - Reconhecer bots e browsers anti-deteção que utilizam camuflagem. - Detetar servidores maliciosos através de técnicas de análise ativa e passiva. ###### Parâmetros-chave de ligação de rede para recolha de impressões digitais **Cabeçalhos TCP/IP - Tamanho da janela. - Sequência de bandeiras. - TTL (Time to Live). **Parâmetros TLS/SSL** - Conjuntos de cifras suportados. - Extensões e sua ordem. - Versão do protocolo. ###### Parâmetros da impressão digital da rede **1. Parâmetros de segurança da camada de transporte (TLS) ** **Versões do TLS:** - Versão de registo: TLS 1.0 (769). - Versão do aperto de mão: TLS 1.2 (771). - Versão acordada: TLS 1.3 (772). **Conjuntos de cifras:** O cliente suporta vários conjuntos de cifras, incluindo: - TLS_AES_128_GCM_SHA256 (4865). - TLS_AES_256_GCM_SHA384 (4866). - TLS_CHACHA20_POLY1305_SHA256 (4867). - Várias cifras baseadas em ECDHE e RSA. **2. Métodos de recolha de impressões digitais** ** - Impressão digital JA3:** ◦ Hash: dcc69aae7a9e90b98e2f45cefce8d0ab. ◦ Formato: versão TLS, conjuntos de cifras, extensões, curvas elípticas, formatos de curvas elípticas. ◦ Utilizado para identificar clientes TLS com base nas caraterísticas da sua mensagem de boas-vindas. ** - Impressão digital JA3N:** ◦ Hash: dee19b855b658c6aa0f575eda252525e19. ◦ Semelhante ao JA3, mas normalizado para remover os valores GREASE. ** - Pegada de JA4:** ◦ Valor: t13d1516h2_8daaf6152771_02713d6af862. ◦ Inclui a versão TLS e outros parâmetros de ligação. #### Exemplos de análises de impressões digitais de p0f, JA3, JA4 ###### Análise da p0f Um exemplo de utilização da p0f para determinar o SO: Considere a impressão digital p0f de um computador Windows ligado por cabo a um router com Internet de um ISP. Vamos abrir a página p0ftest.tanatos.org - mod: “syn” cli: “188.226.xxx.xxx/26860” srv: “167.172.59.39/443” subj: “cli” os: “kernel do Windows NT” dist: “15” params: “genérico” raw_sig: “4:113+15:0:1460:mss*44,8:mss,nop,ws,nop,nop,sok:df,id+:0” - mod: “mtu” cli: “188.226.xxx.xxx/26860” srv: “167.172.59.39/443” subj: “cli” ligação: “Ethernet ou modem” raw_mtu: “1500” Como resultado do teste verificamos a seguinte caraterística para o sistema operativo Windows: ordem das opções TCP (mss,nop,ws,nop,nop,sok), multiplicador (mss*44,8) e TCP Window Size (113+15), com base nestes dados o site conclui que estamos a utilizar o SO: “Windows NT kernel”. Tamanho Os valores mss 1460 (Tamanho máximo dos dados TCP sem cabeçalhos) e mtu 1500 (Tamanho máximo do pacote)? são parâmetros relacionados que definem o tamanho dos pacotes na rede e indicam o uso de “Ethernet ou modem” Vamos repetir o teste num dispositivo móvel ligado por Wi-Fi ao router - mod: “syn” cli: “188.226.xxx.xxx.xxx/60496” srv: “167.172.59.39/443” subj: “cli” os: “Linux 2.2.x-3.x” dist: “15” params: “genérico” raw_sig: “4:49+15:0:1460:65535,10:mss,sok,ts,nop,ws:df,id+:0” - mod: “mtu” cli: “188.226.xxx.xxx.xxx/60496” srv: “167.172.59.39/443” subj: “cli” ligação: “Ethernet ou modem” raw_mtu: “1500” - mod: “uptime” cli: “188.226.xxx.xxx.xxx/60496” srv: “167.172.59.39/443” subj: “cli” uptime: “25 dias 14 hrs 22 min (modulo 49 dias)” raw_freq: “1000.03 Hz”. Neste teste, o dispositivo foi identificado como os: “Linux 2.2.x-3.x” por uma série de caraterísticas: ordem das opções TCP (mss,sok,ts,nop,ws), valor do tamanho da janela TCP (49+15). Também na impressão digital há informações sobre o tempo de presença do dispositivo no tempo de atividade da rede: “25 days 14 hrs 22 min (modulo 49 days)”. Vamos verificar a impressão digital P0f no dispositivo móvel android com 4G - mod: “syn” cli: “176.15.252.192/41378 srv: “167.172.59.39/443” subj: “cli” os: “Linux 2.2.x-3.x” dist: “14” params: “generic” raw_sig: “4:50+14:0:1408:65535,10:mss,sok,ts,nop,ws:df,id+:0” - mod: “mtu” cli: “176.15.252.192/41378” srv: “167.172.59.39/443” subj: “cli” link: “?????” raw_mtu: “1448” - mod: “uptime” cli: “176.15.252.192/41378” srv: “167.172.59.39/443” subj: “cli” uptime: “32 dias 13 hrs 29 min (modulo 49 dias)” raw_freq: “989.80 Hz”. A caraterística distintiva neste exemplo são os tamanhos dos pacotes mss 1408 e mtu 1448. Vamos executar o teste num browser anti-deteção com uma impressão digital móvel utilizando um proxy comprado a um dos serviços  Neste exemplo, obtemos uma impressão digital p0f correspondente a um dispositivo de secretária, mas tentamos fazer-nos passar por um dispositivo móvel. Estas inconsistências serão tratadas como suspeitas pelos sistemas antifraude. Também neste exemplo, os valores de mss 1360 e mtu 1400 correspondem a tamanhos de pacotes OpenVPN e diferem dos valores da maioria dos operadores móveis. Vamos repetir o teste no browser anti-deteção com outro proxy  Os resultados do teste com o proxy fornecido são completamente consistentes com os resultados do teste num dispositivo móvel real. ###### UDP (Protocolo de Datagrama do Utilizador) em sistemas antifraude. O UDP (User Datagram Protocol) é um protocolo de transporte que funciona sobre o IP (Internet Protocol). Foi concebido para a transferência rápida e simplificada de dados sem estabelecer uma ligação e sem garantir a entrega. Hoje em dia, os sistemas antifraude estabelecem frequentemente uma ligação com o cliente através de UDP. Este método ajuda a determinar o endereço IP real do cliente e a detetar a utilização de proxies que não processam os pacotes UDP e os transmitem diretamente ao destinatário, revelando o endereço IP real, ou que bloqueiam os pacotes UDP, o que indica a utilização de uma máscara para o endereço IP real. Vamos testar o suporte a UDP abrindo a página networktest.twilio.com no computador.  Vamos repetir o teste num dispositivo móvel com 4G  Ambos os dispositivos reais passam com sucesso nos testes de ligação UDP. Vamos executar o teste num browser anti-deteção utilizando o primeiro proxy  Esse proxy bloqueia conexões UDP. Vamos verificar nosso segundo proxy em um navegador anti-deteção  Este tipo de proxy estabelece e mantém ligações UDP e passa com êxito as verificações. ###### Impressão digital JA3 A impressão digital JA3 é formada a partir dos valores: TLSVersion, Ciphers, Extensions, EllipticCurves, EllipticCurvePointFormats Exemplo: 769,47–53–5–10–49161–49162–49171–49172–50–56–19–4,0–10–11,23–24–25,0 Você pode ler mais sobre como a impressão digital JA3/JA3S é formada e funciona neste artigo engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967 Vamos ver como é a impressão digital JA3 usando os navegadores Chrome e Firefox como exemplos. Vamos abrir a página tls.peet.ws/api/all em um computador no navegador Firefox  771,4865-4867-4866-49195-49199-52393-52392-49196-49200-49162-49161-49171-49172-156-157-47-53,0-23-65281-10-11-16-5-34-51-43-13-45-28-27-65037-41,4588-29-23-24-25-256-257,0 Actualizando a página, temos a seguinte impressão de JA3  771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,23-45-18-13-43-35-11-10-5-0-65281-65037-16-27-51-17513-41,4588-29-23-24,0 Comparando as impressões obtidas a partir do mesmo dispositivo no browser Firefox, vemos uma ligeira diferença nos valores das Extensões. Vamos abrir a página de teste no navegador Chrome no nosso computador e obter o resultado da impressão digital JA3 771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,51-11-13-35-0-5-18-65037-16-43-45-10-65281-17513-27-23-41,4588-29-23-24,0 Vamos atualizar a página no navegador Chrome e ver a pegada JA3 771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,35-51-10-27-13-18-65281-65037-45-16-5-23-43-0-11-17513-41,4588-29-23-24,0 Podemos observar que, para se proteger contra a obtenção da impressão digital JA3, o navegador Chrome altera a ordem dos valores das Extensões. Vamos repetir o teste num dispositivo móvel no browser Firefox  JA3: 771,4865-4867-4866-49195-49199-52393-52392-49196-49200-49162-49161-49171-49172-156-157-47-53,0-23-65281-10-11-35-16-5-34-51-43-13-45-28-27-65037,29-23-24-25-256-257,0 Vamos atualizar a página no browser móvel Firefox JA3: 771,4865-4867-4866-49195-49199-52393-52392-49196-49200-49162-49161-49171-49172-156-157-47-53,0-23-65281-10-11-16-5-34-51-43-13-45-28-27-65037-41,29-23-24-25-256-257,0 No browser móvel Firefox, bem como no ambiente de trabalho, os valores das Extensões mudaram quando a página foi actualizada. Vamos efetuar o teste no navegador móvel Chrome  JA3: 771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-65281-13-5-17513-51-27-45-43-11-65037-23-16-35-18-10,4588-29-23-24,0 Vamos atualizar a página JA3: 771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,10-13-23-43-18-35-0-65281-51-11-45-27-16-5-65037-17513-41,4588-29-23-24,0 O navegador Chrome para telemóvel altera a ordem dos valores das Extensões da mesma forma que na versão para computador. Vamos combinar os resultados numa tabela e ordenar os valores por ordem  Na tabela, podemos observar as diferenças caraterísticas entre os valores nas secções Cifras, Extensões e Curvas Elípticas da pegada JA3 para diferentes navegadores e sistemas. Com base nestes valores, os sistemas antifraude podem distinguir entre sistemas operativos conhecidos e navegadores em utilização. É importante notar que os conjuntos de valores em diferentes versões do mesmo navegador podem diferir ligeiramente. Igualmente importante é a impressão digital JA3S, que é formada a partir dos valores de Versão, Cifra Aceite e Lista de Extensões da mensagem TLS Server Hello. Vejamos as versões desktop dos navegadores Firefox e Chrome como exemplos. Firefox JA3S:  Chrome JA3S:  Com base nos resultados do teste, podemos concluir que os valores da Lista de Extensões na pegada JA3S quando o servidor responde são diferentes para clientes diferentes. ###### Impressão digital JA4 A impressão digital JA4 é uma versão melhorada da impressão digital JA3, que tem em conta mais parâmetros e é mais estável. Um exemplo de uma impressão digital JA4: t13d1517h2_8daaf6152771_b0da82dd1658 Onde: **t** 13d1517h2_8daaf6152771_b0da82dd1658 - Protocolo (t é TCP, q é QUIQ) t **13** d1517h2_8daaf6152771_b0da82dd1658 - Versão TLS (12 - 1.2, 13 - 1.3) t13 **d** 1517h2_8daaf6152771_b0da82dd1658 - Indica um salto por i - endereço ip ou d - domínio t13d **15** 17h2_8daaf6152771_b0da82dd1658 - número de Chipher Suites t13d15 **17** h2_8daaf6152771_b0da82dd1658 - número de extensões t13d1517 **h2** _8daaf6152771_b0da82dd1658 - h2 - protocolo HTTP/2 t13d1517 h2_ **8daaf6152771** _b0da82dd1658 - hash para Chipher Suites ordenados t13d1517h2_8daaf6152771_ **b0da82dd1658** - hash da lista de extensões e algoritmos ordenados É assim que a impressão digital JA4 é representada  JA4: t13d1517h2_8daaf6152771_b0da82dd1658 E a sua versão em bruto JA4_r: t13d1517h2_002f,0035,009c,009d,1301,1302,1303,c013,c014,c02b,c02c,c02f,c030,cca8,cca9_0005,000a,000b, 000d,0012,0017,001b,0023,0029,002b,002d,0033,4469,fe0d,ff01_0403,0804,0401,0503,0805,0501,0806,0601 Para obter mais informações sobre a formação de uma impressão digital JA4, consulte esta página blog.foxio.io/ja4+-network-fingerprinting #### Métodos de falsificação da impressão digital da rede Os atacantes podem tentar ocultar os parâmetros reais de uma ligação de rede através de: - Modificação dos parâmetros TCP/IP. - Geração de impressões digitais JA3/JA4 falsas. - Utilização de servidores proxy ou VPNs. Os sistemas antifraude respondem a estas tentativas analisando as anomalias, comparando as impressões digitais e verificando a sequência de acções do cliente. #### Conclusão As impressões digitais da rede, como p0f, JA3, JA4, tornaram-se ferramentas importantes no arsenal dos sistemas antifraude. Permitem não só identificar dispositivos, mas também detetar tentativas de mascaramento. A combinação de impressões digitais da rede e do hardware, bem como a análise aprofundada dos protocolos HTTP/2 e da pilha TCP/IP, proporcionam uma proteção mais precisa contra fraudes e ameaças. _Bannykh M.V._