diff --git a/src/network-services-pentesting/pentesting-ntp.md b/src/network-services-pentesting/pentesting-ntp.md index 525e64f46..080f05eef 100644 --- a/src/network-services-pentesting/pentesting-ntp.md +++ b/src/network-services-pentesting/pentesting-ntp.md @@ -4,59 +4,154 @@ ## Informações Básicas -O **Protocolo de Tempo de Rede (NTP)** garante que computadores e dispositivos de rede em redes de latência variável sincronizem seus relógios com precisão. É vital para manter a cronometragem precisa em operações de TI, segurança e registro. A precisão do NTP é essencial, mas também apresenta riscos de segurança se não for gerenciada adequadamente. +O **Protocolo de Tempo de Rede (NTP)** garante que computadores e dispositivos de rede em redes com latência variável sincronizem seus relógios com precisão. É vital para manter a cronometragem precisa em operações de TI, segurança e registro. Como o tempo é usado em quase todos os processos de autenticação, criptografia e forense, **um atacante que pode influenciar o NTP pode frequentemente contornar controles de segurança ou tornar os ataques mais difíceis de investigar.** -### Resumo & Dicas de Segurança: +### Resumo & Dicas de Segurança -- **Propósito**: Sincroniza os relógios dos dispositivos através das redes. -- **Importância**: Crítico para segurança, registro e operações. +- **Propósito**: Sincroniza os relógios dos dispositivos em redes. +- **Importância**: Crítico para segurança, registro, criptografia e sistemas distribuídos. - **Medidas de Segurança**: -- Use fontes NTP confiáveis com autenticação. -- Limite o acesso à rede do servidor NTP. -- Monitore a sincronização em busca de sinais de adulteração. +- Use fontes NTP ou NTS (Segurança de Tempo de Rede) confiáveis com autenticação. +- Restringir quem pode consultar/comandar o daemon (``restrict default noquery``, ``kod`` etc.). +- Desativar consultas de controle de modo legado 6/7 (``monlist``, ``ntpdc``) ou limitar a taxa delas. +- Monitorar a deriva de sincronização/estado de segundo bissexto para adulteração. +- Manter o daemon atualizado (veja os CVEs recentes abaixo). + +**Portas padrão** +``` +123/udp NTP (data + legacy control) +4460/tcp NTS-KE (RFC 8915) – TLS key-establishment for NTP +``` -**Porta padrão:** 123/udp ``` PORT STATE SERVICE REASON 123/udp open ntp udp-response ``` +--- ## Enumeração -```bash -ntpq -c readlist -ntpq -c readvar -ntpq -c peers -ntpq -c associations -ntpdc -c monlist -ntpdc -c listpeers -ntpdc -c sysinfo -``` +### ntpd / ntpq / ntpdc Clássico ```bash -nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 +# Information & variables +ntpq -c rv +ntpq -c readvar +ntpq -c peers +ntpq -c associations + +# Legacy mode-7 (often disabled >=4.2.8p9) +ntpdc -c monlist +ntpdc -c listpeers +ntpdc -c sysinfo ``` +### chrony / chronyc (na maioria das distribuições Linux modernas) + +Apenas um punhado de comandos de monitoramento é aceito de IPs remotos quando ``cmdallow`` está habilitado: +```bash +chronyc -a -n tracking -h +chronyc -a -n sources -v -h +chronyc -a -n sourcestats -h +``` +Veja a página do manual do chronyc para o significado das flags **M/S** e outros campos (stratum, reach, jitter, etc.). + +### Nmap +```bash +# Safe discovery & vuln detection +nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 + +# Explicit monlist check +nmap -sU -p123 --script ntp-monlist +``` +### Escaneamento em massa/Internet +```bash +# Check if MONLIST is enabled (zgrab2 module) +zgrab2 ntp --monlist --timeout 3 --output-file monlist.json -f "zmap_results.csv" +``` +--- ## Examine arquivos de configuração -- ntp.conf +- ``/etc/ntp.conf`` (ntpd) +- ``/etc/chrony/chrony.conf`` (chrony) +- ``/etc/systemd/timesyncd.conf`` (timesyncd – apenas cliente) -## Ataque de Amplificação NTP +Preste atenção especial às linhas ``restrict``, configurações ``kod`` (Kiss-o'-Death), ``disable monitor``/``includefile /etc/ntp/crypto`` e se *NTS* está habilitado (``nts enable``). -[**Como Funciona o Ataque DDoS NTP**](https://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/#gref) +--- +## Vulnerabilidades Recentes (2023-2025) -O **protocolo NTP**, utilizando UDP, permite a operação sem a necessidade de procedimentos de handshake, ao contrário do TCP. Essa característica é explorada em **ataques de amplificação DDoS NTP**. Aqui, os atacantes criam pacotes com um IP de origem falso, fazendo parecer que os pedidos de ataque vêm da vítima. Esses pacotes, inicialmente pequenos, fazem com que o servidor NTP responda com volumes de dados muito maiores, amplificando o ataque. +| Ano | CVE | Componente | Impacto | +|-----|-----|------------|---------| +| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Múltiplas gravações fora dos limites acessíveis via respostas **ntpq**. Patch em **4.2.8p16** 🡒 atualize ou faça back-port das correções. citeturn1search1turn1search2turn1search0| +| 2023 | **CVE-2023-33192** | **ntpd-rs** (implementação em Rust) | Cookie **NTS** malformado causa **DoS** remoto antes da v0.3.3 – afeta a porta 123 mesmo quando NTS **desabilitado**. citeturn4view0| +| 2024 | atualizações de distro | **chrony 4.4 / 4.5** – várias correções de segurança e NTS-KE (por exemplo, SUSE-RU-2024:2022) citeturn2search2| +| 2024 | Registro DDoS | Cloudflare relata um ataque de **reflexão UDP de 5.6 Tbps** (NTP entre os protocolos utilizados). Mantenha *monitor* e *monlist* desabilitados em hosts expostos à Internet. citeturn5search0| -O comando _**MONLIST**_, apesar de seu uso raro, pode relatar os últimos 600 clientes conectados ao serviço NTP. Embora o comando em si seja simples, seu uso indevido em tais ataques destaca vulnerabilidades críticas de segurança. +> **Kits de exploração**: Payloads de prova de conceito para a série de gravações OOB do ntpq de 2023 estão no GitHub (veja o artigo da Meinberg) e podem ser armados para phishing do lado do cliente de sysadmins. citeturn1search4 + +--- +## Ataques Avançados + +### 1. Amplificação / Reflexão NTP + +A consulta legada Mode-7 ``monlist`` retorna até **600 endereços de host** e ainda está presente em milhares de hosts na Internet. Como a resposta (428-468 bytes/entrada) é *~ 200×* maior que a solicitação de 8 bytes, um atacante pode alcançar fatores de amplificação de três dígitos. Mitigações: + +- Atualize para ntp 4.2.8p15+ e **adicione** ``disable monitor``. +- Limite a taxa de UDP/123 na borda ou habilite *sessions-required* em dispositivos DDoS. +- Habilite filtragem de egress *BCP 38* para bloquear spoofing de origem. + +Veja o artigo do centro de aprendizado da Cloudflare para uma explicação passo a passo. citeturn5search1 + +### 2. Ataques de Deslocamento de Tempo / Atraso (pesquisa Khronos / Chronos) + +Mesmo com autenticação, um atacante na rota pode silenciosamente **deslocar o relógio do cliente** ao descartar/atrasar pacotes. O rascunho **Khronos (anteriormente Chronos)** da IETF propõe consultar um conjunto diversificado de servidores em segundo plano e verificar a sanidade do resultado para detectar um deslocamento > 𝚡 ms. O chrony moderno (4.4+) já implementa um filtro de sanidade semelhante (``maxdistance`` / ``maxjitter``). citeturn9search1 + +### 3. Abuso de NTS e exposição 4460/tcp + +NTS move a criptografia pesada para um **canal TLS 1.3 separado na porta 4460/tcp** (``ntske/1``). Implementações ruins (veja CVE-2023-33192) travam ao analisar cookies ou permitem cifras fracas. Os pentesters devem: ```bash -ntpdc -n -c monlist +# TLS reconnaissance +nmap -sV -p 4460 --script ssl-enum-ciphers,ssl-cert + +# Grab banner & ALPN +openssl s_client -connect :4460 -alpn ntske/1 -tls1_3 -ign_eof ``` -## Shodan +Procure por certificados autoassinados ou expirados e suítes de cifra fracas (não-AEAD). Referência: RFC 8915 §4. citeturn11search0 -- `ntp` +--- +## Fortalecimento / Melhor Prática Atual (BCP-233 / RFC 8633) +*Os operadores DEVEM:* + +1. Usar **≥ 4** fontes de tempo independentes e diversas (pools públicos, GPS, pontes PTP) para evitar contaminação de fonte única. +2. Habilitar restrições ``kod`` e ``limited``/``nomodify`` para que clientes abusivos recebam pacotes de limite de taxa **Kiss-o'-Death** em vez de respostas completas. +3. Monitorar logs do daemon para eventos de **panic** ou ajustes de passo > 1000 s. (Assinaturas de ataque por RFC 8633 §5.3.) +4. Considerar **leap-smear** para evitar interrupções de segundo bissexto, mas garantir que *todos* os clientes a montante usem a mesma janela de smear. +5. Manter polling ≤24 h para que as bandeiras de segundo bissexto não sejam perdidas. + +Consulte a RFC 8633 para uma lista de verificação abrangente. citeturn8search0turn8search1 + +--- +## Shodan / Censys Dorks +``` +port:123 "ntpd" # Version banner +udp port:123 monlist:true # Censys tag for vulnerable servers +port:4460 "ntske" # NTS-KE +``` +--- +## Ferramentas Úteis + +| Ferramenta | Propósito | Exemplo | +|------------|-----------|---------| +| ``ntpwn`` | Wrapper de script-kiddie para spray de consultas monlist & peers | ``python ntpwn.py --monlist targets.txt`` | +| **zgrab2 ntp** | Escaneamento em massa / saída JSON incluindo flag monlist | Veja o comando acima | +| ``chronyd`` com ``allow`` | Executar servidor NTP malicioso em laboratório de pentest | ``chronyd -q 'server 127.127.1.0 iburst'`` | +| ``BetterCap`` | Injetar pacotes NTP para MITM de desvio de tempo no Wi-Fi | ``set arp.spoof.targets ; set ntp.time.delta 30s; arp.spoof on`` | + +--- ## Comandos Automáticos HackTricks ``` -Protocol_Name: NTP #Protocol Abbreviation if there is one. -Port_Number: 123 #Comma separated if there is more than one. -Protocol_Description: Network Time Protocol #Protocol Abbreviation Spelled out +Protocol_Name: NTP +Port_Number: 123 +Protocol_Description: Network Time Protocol Entry_1: Name: Notes @@ -71,4 +166,17 @@ Name: Nmap Description: Enumerate NTP Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 {IP} ``` -{{#include ../banners/hacktricks-training.md}} +--- +## Referências + +- RFC 8915 – *Segurança de Tempo de Rede para o Protocolo de Tempo de Rede* (porta 4460) citeturn11search0 +- RFC 8633 – *Protocolo de Tempo de Rede BCP* citeturn8search0 +- Relatório de DDoS da Cloudflare Q4 2024 (5,6 Tbps) citeturn5search0 +- Artigo da Cloudflare sobre *Ataque de Amplificação NTP* citeturn5search1 +- NTP 4.2.8p15 série CVE 2023-04 citeturn1search4 +- Entradas NVD **CVE-2023-26551–55**, **CVE-2023-33192** citeturn1search1turn1search2turn1search0turn4view0 +- Atualização de segurança do chrony da SUSE 2024 (chrony 4.5) citeturn2search2 +- Rascunho Khronos/Chronos (mitigação de deslocamento de tempo) citeturn9search1 +- Manual/examples do chronyc para monitoramento remoto citeturn3search0turn10search1 +- Documentação do módulo ntp do zgrab2 citeturn7search0 +{{#include /banners/hacktricks-training.md}}