mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['', 'src/generic-methodologies-and-resources/pentesting-netw
This commit is contained in:
parent
42d9cc01be
commit
cba48dd752
@ -1,19 +1,19 @@
|
||||
# Pentesting Network
|
||||
# Pentesting de Rede
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
|
||||
## Descobrindo hosts do lado de fora
|
||||
## Descobrindo hosts a partir do exterior
|
||||
|
||||
Esta será uma **seção breve** sobre como encontrar **IPs respondendo** da **Internet**.\
|
||||
Nesta situação, você tem algum **escopo de IPs** (talvez até vários **intervalos**) e você só precisa descobrir **quais IPs estão respondendo**.
|
||||
Esta é uma **seção breve** sobre como encontrar **IPs que respondem** a partir da **Internet**.\
|
||||
Nessa situação você tem algum **escopo de IPs** (talvez até vários **ranges**) e você só precisa descobrir **quais IPs estão respondendo**.
|
||||
|
||||
### 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 fácil é simplesmente 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).
|
||||
Esta é a **forma mais fácil** e **mais rápida** de descobrir se um host está ativo ou não.\
|
||||
Você pode tentar enviar alguns **ICMP** pacotes e esperar respostas. A maneira mais simples é enviar um **echo request** e aguardar a resposta. Você pode fazer isso usando um simples `ping` ou usando `fping` para **ranges**.\
|
||||
Você também pode usar nmap para enviar outros tipos de ICMP packets (isso evitará filtros ao comum ICMP echo request-response).
|
||||
```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
|
||||
@ -21,31 +21,31 @@ nmap -PE -PM -PP -sn -n 199.66.11.0/24 #Send echo, timestamp requests and subnet
|
||||
```
|
||||
### Descoberta de Portas TCP
|
||||
|
||||
É muito comum encontrar que todos os tipos de pacotes ICMP estão sendo filtrados. Então, tudo o que você pode fazer para verificar se um host está ativo é **tentar encontrar portas abertas**. Cada host tem **65535 portas**, então, se você tiver um escopo "grande", você **não pode** testar se **cada porta** de cada host está aberta ou não, isso levará muito tempo.\
|
||||
Então, o que você precisa é de um **scanner de portas rápido** ([masscan](https://github.com/robertdavidgraham/masscan)) e uma lista das **portas mais utilizadas:**
|
||||
É muito comum encontrar que todo tipo de pacotes ICMP está sendo filtrado. Então, tudo o que você pode fazer para verificar se um host está ativo é **try to find open ports**. Cada host tem **65535 ports**, então, se você tiver um escopo "grande" você **não pode** testar se **each port** de cada host está open or not, isso levaria muito tempo.\
|
||||
Então, o que você precisa é de um **fast port scanner** ([masscan](https://github.com/robertdavidgraham/masscan)) e uma lista das **ports mais usadas:**
|
||||
```bash
|
||||
#Using masscan to scan top20ports of nmap in a /24 range (less than 5min)
|
||||
masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5900,8080 199.66.11.0/24
|
||||
```
|
||||
Você também pode realizar esta etapa com `nmap`, mas é mais lento e de certa forma `nmap` tem problemas para identificar hosts ativos.
|
||||
Você também pode realizar esta etapa com `nmap`, mas ele é mais lento e, de certa forma, o `nmap` tem problemas para identificar hosts ativos.
|
||||
|
||||
### Descoberta de Portas HTTP
|
||||
### HTTP Port Discovery
|
||||
|
||||
Esta é apenas uma descoberta de portas TCP útil quando você deseja **focar na descoberta de serviços HTTP**:
|
||||
Isso é apenas uma descoberta de portas TCP útil quando você quer **focar na descoberta de serviços HTTP**:
|
||||
```bash
|
||||
masscan -p80,443,8000-8100,8443 199.66.11.0/24
|
||||
```
|
||||
### Descoberta de Porta UDP
|
||||
### UDP Port Discovery
|
||||
|
||||
Você também pode tentar verificar se há 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 existe alguma **UDP port open** para decidir se deve **prestar mais atenção** a um **host.** Como serviços UDP normalmente **não respondem** com **nenhum dado** a um pacote probe UDP vazio regular, é difícil dizer se uma port está sendo filtrada ou open. A maneira mais fácil de decidir isso é enviar um packet relacionado ao service em execução, e, como você não sabe qual service está em execução, você deve tentar o mais provável com base no número da port:
|
||||
```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 antes testará as **top 1000 portas UDP** em cada host dentro da faixa **/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á essas **UDP probes** para suas **portas esperadas** (para uma faixa /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
|
||||
### Descoberta de portas SCTP
|
||||
```bash
|
||||
#Probably useless, but it's pretty fast, why not try it?
|
||||
nmap -T4 -sY -n --open -Pn <IP/range>
|
||||
@ -54,13 +54,14 @@ nmap -T4 -sY -n --open -Pn <IP/range>
|
||||
|
||||
Aqui você pode encontrar um bom guia de todos os ataques Wifi bem conhecidos na época da escrita:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
../pentesting-wifi/
|
||||
{{#endref}}
|
||||
|
||||
## Descobrindo hosts de dentro
|
||||
## Descobrindo hosts de dentro da rede
|
||||
|
||||
Se você estiver dentro da rede, uma das primeiras coisas que você vai querer fazer é **descobrir outros hosts**. Dependendo de **quanto ruído** você pode/quer fazer, diferentes ações podem ser realizadas:
|
||||
Se você estiver dentro da rede, uma das primeiras coisas que você vai querer fazer é **descobrir outros hosts**. Dependendo de **quanto ruído** você pode/quer fazer, diferentes ações podem ser executadas:
|
||||
|
||||
### Passivo
|
||||
|
||||
@ -75,7 +76,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**.\
|
||||
Observe que as técnicas comentadas em [_**Discovering hosts from the outside**_](#discovering-hosts-from-the-outside) (_TCP/HTTP/UDP/SCTP Port Discovery_) 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
|
||||
@ -98,33 +99,33 @@ alive6 <IFACE> # Send a pingv6 to multicast.
|
||||
```
|
||||
### Active ICMP
|
||||
|
||||
Note que as técnicas comentadas em _Descobrindo hosts do exterior_ ([_**ICMP**_](#icmp)) também podem ser **aplicadas aqui**.\
|
||||
Mas, como você está na **mesma rede** que os outros hosts, você pode fazer **mais coisas**:
|
||||
Observe que as técnicas comentadas em _Discovering hosts from the outside_ ([_**ICMP**_](#icmp)) também podem ser **aplicadas aqui**.\
|
||||
Mas, como você está na **mesma rede** que os outros hosts, pode fazer **mais coisas**:
|
||||
|
||||
- Se você **pingar** um **endereço de broadcast de sub-rede**, o ping deve chegar a **cada host** e eles podem **responder** a **você**: `ping -b 10.10.5.255`
|
||||
- Pingar o **endereço de broadcast da rede** pode até encontrar hosts dentro de **outras sub-redes**: `ping -b 255.255.255.255`
|
||||
- Use as flags `-PE`, `-PP`, `-PM` do `nmap` para realizar a descoberta de hosts enviando respectivamente **ICMPv4 echo**, **timestamp** e **solicitações de máscara de sub-rede:** `nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24`
|
||||
- Se você **ping** um **subnet broadcast address**, o ping deve chegar a **cada host** e eles podem **responder** para **você**: `ping -b 10.10.5.255`
|
||||
- Ao **ping**ar o **network broadcast address** você pode até encontrar hosts em **outras subnets**: `ping -b 255.255.255.255`
|
||||
- Use as flags `-PE`, `-PP`, `-PM` do `nmap` para realizar descoberta de hosts, enviando respectivamente **ICMPv4 echo**, **timestamp** e **subnet mask requests:** `nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24`
|
||||
|
||||
### **Wake On Lan**
|
||||
|
||||
Wake On Lan é usado para **ligar** computadores através de uma **mensagem de rede**. O pacote mágico usado para ligar o computador é apenas um pacote onde um **MAC Dst** é fornecido e então é **repetido 16 vezes** dentro do mesmo pacote.\
|
||||
Então, esse tipo de pacotes geralmente é enviado em um **ethernet 0x0842** ou em um **pacote UDP para a porta 9**.\
|
||||
Se **nenhum \[MAC]** for fornecido, o pacote é enviado para **broadcast ethernet** (e o MAC de broadcast será o que está sendo repetido).
|
||||
Wake On Lan é usado para **turn on** computadores através de uma **network message**. O magic packet usado para ligar o computador é basicamente um packet onde um **MAC Dst** é fornecido e então ele é **repetido 16 vezes** dentro do mesmo paket.\
|
||||
Esse tipo de packets costuma ser enviado em um **ethernet 0x0842** ou em um **UDP packet to port 9**.\
|
||||
Se **no \[MAC]** for fornecido, o packet é enviado para **broadcast ethernet** (e o broadcast MAC será o que está sendo repetido).
|
||||
```bash
|
||||
# Bettercap (if no [MAC] is specificed ff:ff:ff:ff:ff:ff will be used/entire broadcast domain)
|
||||
wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847
|
||||
wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0842
|
||||
wol.udp [MAC] #Send a WOL as an IPv4 broadcast packet to UDP port 9
|
||||
```
|
||||
## Escaneando Hosts
|
||||
## Escaneamento de Hosts
|
||||
|
||||
Uma vez que você tenha descoberto todos os IPs (externos ou internos) que deseja escanear em profundidade, diferentes ações podem ser realizadas.
|
||||
|
||||
### TCP
|
||||
|
||||
- **Porta** aberta: _SYN --> SYN/ACK --> RST_
|
||||
- **Porta** fechada: _SYN --> RST/ACK_
|
||||
- **Porta** filtrada: _SYN --> \[SEM RESPOSTA]_
|
||||
- **Porta** filtrada: _SYN --> mensagem ICMP_
|
||||
- **Porta aberta**: _SYN --> SYN/ACK --> RST_
|
||||
- **Porta fechada**: _SYN --> RST/ACK_
|
||||
- **Porta filtrada**: _SYN --> \[NO RESPONSE]_
|
||||
- **Porta filtrada**: _SYN --> ICMP message_
|
||||
```bash
|
||||
# Nmap fast scan for the most 1000tcp ports used
|
||||
nmap -sV -sC -O -T4 -n -Pn -oA fastscan <IP>
|
||||
@ -140,10 +141,10 @@ syn.scan 192.168.1.0/24 1 10000 #Ports 1-10000
|
||||
|
||||
Existem 2 opções para escanear uma porta UDP:
|
||||
|
||||
- Enviar um **pacote UDP** e verificar a resposta _**ICMP unreachable**_ se a porta estiver **fechada** (em vários casos, ICMP será **filtrado**, então você não receberá nenhuma informação se a porta estiver fechada ou aberta).
|
||||
- Enviar **datagramas formatados** para provocar uma resposta de um **serviço** (por exemplo, DNS, DHCP, TFTP e outros, conforme listado em _nmap-payloads_). Se você receber uma **resposta**, então a porta está **aberta**.
|
||||
- Enviar um **UDP packet** e verificar a resposta _**ICMP unreachable**_ se a porta estiver **closed** (em vários casos o ICMP será **filtered**, então você não receberá informação sobre se a porta está **closed** ou **open**).
|
||||
- Enviar **formatted datagrams** para provocar uma resposta de um **service** (por exemplo, DNS, DHCP, TFTP e outros, como listado em _nmap-payloads_). Se você receber uma **response**, então a porta está **open**.
|
||||
|
||||
**Nmap** irá **misturar ambas** as opções usando "-sV" (escanes UDP são muito lentos), mas note que escanes UDP são mais lentos do que escanes TCP:
|
||||
**Nmap** irá **combinar ambas** as opções usando "-sV" (UDP scans são muito lentos), mas repare que UDP scans são mais lentos que TCP scans:
|
||||
```bash
|
||||
# Check if any of the most common udp services is running
|
||||
udp-proto-scanner.pl <IP>
|
||||
@ -157,18 +158,19 @@ nmap -sU -sV --version-intensity 0 -n -T4 <IP>
|
||||
```
|
||||
### SCTP Scan
|
||||
|
||||
**SCTP (Stream Control Transmission Protocol)** é projetado para ser usado juntamente com **TCP (Transmission Control Protocol)** e **UDP (User Datagram Protocol)**. Seu principal objetivo é facilitar o transporte de dados de telefonia sobre redes IP, espelhando muitos dos recursos de confiabilidade encontrados no **Signaling System 7 (SS7)**. **SCTP** é um componente central da família de protocolos **SIGTRAN**, que visa transportar sinais SS7 sobre redes IP.
|
||||
**SCTP (Stream Control Transmission Protocol)** é projetado para ser usado juntamente com **TCP (Transmission Control Protocol)** e **UDP (User Datagram Protocol)**. Seu principal objetivo é facilitar o transporte de dados de telefonia sobre redes IP, espelhando muitas das funcionalidades de confiabilidade encontradas em **Signaling System 7 (SS7)**. **SCTP** é um componente central da família de protocolos **SIGTRAN**, que tem como objetivo transportar sinais SS7 sobre redes IP.
|
||||
|
||||
O suporte para **SCTP** é fornecido por vários sistemas operacionais, como **IBM AIX**, **Oracle Solaris**, **HP-UX**, **Linux**, **Cisco IOS** e **VxWorks**, indicando sua ampla aceitação e utilidade no campo de telecomunicações e redes.
|
||||
O suporte para **SCTP** é fornecido por vários sistemas operacionais, como **IBM AIX**, **Oracle Solaris**, **HP-UX**, **Linux**, **Cisco IOS**, e **VxWorks**, indicando sua ampla aceitação e utilidade no campo de telecomunicações e redes.
|
||||
|
||||
Dois tipos diferentes de varreduras para SCTP são oferecidos pelo nmap: _-sY_ e _-sZ_
|
||||
Dois scans diferentes para SCTP são oferecidos pelo nmap: _-sY_ e _-sZ_
|
||||
```bash
|
||||
# Nmap fast SCTP scan
|
||||
nmap -T4 -sY -n -oA SCTFastScan <IP>
|
||||
# Nmap all SCTP scan
|
||||
nmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan <IP>
|
||||
```
|
||||
### Evasão de IDS e IPS
|
||||
### IDS and IPS evasion
|
||||
|
||||
|
||||
{{#ref}}
|
||||
ids-evasion.md
|
||||
@ -176,13 +178,14 @@ ids-evasion.md
|
||||
|
||||
### **Mais opções do nmap**
|
||||
|
||||
|
||||
{{#ref}}
|
||||
nmap-summary-esp.md
|
||||
{{#endref}}
|
||||
|
||||
### Revelando Endereços IP Internos
|
||||
### Revelando endereços IP internos
|
||||
|
||||
**Roteadores, firewalls e dispositivos de rede mal configurados** às vezes respondem a sondagens de rede usando **endereços de origem não públicos**. **tcpdump** pode ser utilizado para identificar pacotes recebidos de endereços privados durante os testes. Especificamente, no Kali Linux, pacotes podem ser capturados na **interface eth2**, que é acessível a partir da Internet pública. É importante notar que, se sua configuração estiver atrás de um NAT ou um Firewall, tais pacotes provavelmente serão filtrados.
|
||||
**Roteadores, firewalls e dispositivos de rede mal configurados** às vezes respondem a sondagens de rede usando **endereços de origem não públicos**. **tcpdump** pode ser utilizado para identificar pacotes recebidos de endereços privados durante os testes. Especificamente, no Kali Linux, pacotes podem ser capturados na interface **eth2**, que é acessível a partir da Internet pública. É importante notar que, se sua configuração estiver atrás de um NAT ou de um Firewall, tais pacotes provavelmente serão filtrados.
|
||||
```bash
|
||||
tcpdump –nt -i eth2 src net 10 or 172.16/12 or 192.168/16
|
||||
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
|
||||
@ -192,9 +195,9 @@ 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 a malha de comutação sob estresse, os atacantes podem capturar material sensível por meio de sniffing de rede passivo.
|
||||
Com Sniffing você pode aprender detalhes de IP ranges, tamanhos de sub-rede, MAC addresses e hostnames ao revisar frames e packets capturados. Se a rede estiver mal configurada ou o switching fabric sob estresse, atacantes podem capturar material sensível via passive network sniffing.
|
||||
|
||||
Se uma rede Ethernet comutada estiver configurada corretamente, você verá apenas quadros de broadcast e material destinado ao seu endereço MAC.
|
||||
Se uma rede Ethernet comutada estiver configurada corretamente, você verá apenas broadcast frames e material destinado ao seu MAC address.
|
||||
|
||||
### TCPDump
|
||||
```bash
|
||||
@ -202,7 +205,7 @@ sudo tcpdump -i <INTERFACE> udp port 53 #Listen to DNS request to discover what
|
||||
tcpdump -i <IFACE> icmp #Listen to icmp packets
|
||||
sudo bash -c "sudo nohup tcpdump -i eth0 -G 300 -w \"/tmp/dump-%m-%d-%H-%M-%S-%s.pcap\" -W 50 'tcp and (port 80 or port 443)' &"
|
||||
```
|
||||
Também é possível capturar pacotes de uma máquina remota através de uma sessão SSH com o Wireshark como a interface gráfica em tempo real.
|
||||
Também é possível capturar pacotes de uma máquina remota através de uma sessão SSH usando o Wireshark como GUI em tempo real.
|
||||
```
|
||||
ssh user@<TARGET IP> tcpdump -i ens160 -U -s0 -w - | sudo wireshark -k -i -
|
||||
ssh <USERNAME>@<TARGET IP> tcpdump -i <INTERFACE> -U -s0 -w - 'port not 22' | sudo wireshark -k -i - # Exclude SSH traffic
|
||||
@ -224,11 +227,11 @@ Obviamente.
|
||||
|
||||
Você pode usar ferramentas como [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) para analisar credenciais de um pcap ou de uma interface ao vivo.
|
||||
|
||||
## Ataques LAN
|
||||
## Ataques na LAN
|
||||
|
||||
### Spoofing ARP
|
||||
### ARP spoofing
|
||||
|
||||
Spoofing ARP consiste em enviar ARPResponses gratuitos para indicar que o IP de uma máquina possui o MAC do nosso dispositivo. Assim, a vítima mudará a tabela ARP e entrará em contato com nossa máquina toda vez que quiser contatar o IP spoofed.
|
||||
ARP Spoofing consiste em enviar gratuitous ARPResponses para indicar que o IP de uma máquina possui o MAC do nosso dispositivo. Depois, a vítima alterará a tabela ARP e passará a contactar a nossa máquina sempre que tentar alcançar o IP spoofed.
|
||||
|
||||
#### **Bettercap**
|
||||
```bash
|
||||
@ -244,25 +247,25 @@ 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 - Transbordo de CAM
|
||||
### MAC Flooding - CAM overflow
|
||||
|
||||
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 (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 estiver cheia, o switch passa a se comportar como um hub (broadcasting todo o tráfego).
|
||||
```bash
|
||||
macof -i <interface>
|
||||
```
|
||||
Em switches modernos, essa vulnerabilidade foi corrigida.
|
||||
Em switches modernos essa vulnerabilidade foi corrigida.
|
||||
|
||||
### Ataques 802.1Q VLAN / DTP
|
||||
### 802.1Q VLAN / DTP Ataques
|
||||
|
||||
#### Trunking Dinâmico
|
||||
#### Dynamic Trunking
|
||||
|
||||
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.
|
||||
O **Dynamic Trunking Protocol (DTP)** é projetado como um protocolo de camada de enlace para facilitar um sistema automático de trunking, permitindo que switches selecionem automaticamente portas para modo Trunk ou modo não-Trunk. O uso de **DTP** costuma ser visto como indicativo de um design de rede subótimo, enfatizando a importância de configurar trunks manualmente apenas quando necessário e de manter documentação adequada.
|
||||
|
||||
Por padrão, as portas do switch são configuradas para operar no modo Dynamic Auto, 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.
|
||||
Por padrão, as portas do switch estão configuradas para operar em Dynamic Auto mode, o que significa que estão prontas para iniciar trunking se estimuladas por um switch vizinho. Surge uma preocupação de segurança quando um pentester ou atacante se conecta ao switch e envia um quadro DTP Desirable, forçando a porta a entrar em modo Trunk. Essa ação permite ao atacante enumerar VLANs por meio da análise de quadros STP e contornar 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 Default, Trunk, Dynamic, Auto ou Access—sendo este último a única configuração imune a ataques de VLAN hopping. Esta ferramenta avalia o status de vulnerabilidade do switch.
|
||||
A presença de DTP em muitos switches por padrão pode ser explorada por adversários para imitar o comportamento de um switch, ganhando acesso ao tráfego de todas as VLANs. O script [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) é usado para monitorar uma interface, revelando se um switch está nos modos Default, Trunk, Dynamic, Auto ou Access — sendo Access a única configuração imune a ataques de VLAN hopping. Essa ferramenta avalia o estado de vulnerabilidade do switch.
|
||||
|
||||
Caso uma vulnerabilidade de rede seja identificada, a ferramenta _**Yersinia**_ pode ser empregada para "habilitar trunking" via o protocolo DTP, permitindo a observação de pacotes de todas as VLANs.
|
||||
Se for identificada uma vulnerabilidade na rede, a ferramenta _**Yersinia**_ pode ser empregada para “enable trunking” via o protocolo DTP, permitindo a observação de pacotes de todas as VLANs.
|
||||
```bash
|
||||
apt-get install yersinia #Installation
|
||||
sudo apt install kali-linux-large #Another way to install it in Kali
|
||||
@ -275,20 +278,20 @@ yersinia -G #For graphic mode
|
||||
```
|
||||
.png>)
|
||||
|
||||
Para enumerar as VLANs, também é possível gerar o quadro DTP Desirable com o script [**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)**. N**ão interrompa o script sob nenhuma circunstância. Ele injeta DTP Desirable a cada três segundos. **Os canais de trunk criados dinamicamente no switch vivem apenas por cinco minutos. Após cinco minutos, o trunk cai.**
|
||||
Para enumerar as VLANs também é possível gerar o frame DTP Desirable com o script [**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)**. **N**ão interrompa o script sob nenhuma circunstância. Ele injeta DTP Desirable a cada três segundos. **Os canais trunk criados dinamicamente no switch duram apenas cinco minutos. Após cinco minutos, o trunk cai.**
|
||||
```
|
||||
sudo python3 DTPHijacking.py --interface eth0
|
||||
```
|
||||
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**.
|
||||
Gostaria de apontar que **Access/Desirable (0x03)** indica que o frame DTP é do tipo Desirable, o que instrui a porta a mudar para Trunk mode. 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.**
|
||||
Ao analisar os frames STP, **aprendemos sobre a existência da VLAN 30 e VLAN 60.**
|
||||
|
||||
<figure><img src="../../images/image (124).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### Atacando VLANs específicas
|
||||
|
||||
Uma vez que você conhece os IDs de VLAN e os valores de IP, você pode **configurar uma interface virtual para atacar uma VLAN específica**.\
|
||||
Se o DHCP não estiver disponível, use _ifconfig_ para definir um endereço IP estático.
|
||||
Se o DHCP não estiver disponível, então use _ifconfig_ para definir um endereço IP estático.
|
||||
```
|
||||
root@kali:~# modprobe 8021q
|
||||
root@kali:~# vconfig add eth1 250
|
||||
@ -323,145 +326,146 @@ sudo dhclient -v eth0.30
|
||||
```
|
||||
#### Automatic VLAN Hopper
|
||||
|
||||
O ataque discutido de **Dynamic Trunking e criação de interfaces virtuais para descobrir hosts dentro** de outras VLANs é **realizado automaticamente** pela ferramenta: [**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger)
|
||||
Os ataques discutidos de **Dynamic Trunking and creating virtual interfaces an discovering hosts inside** em outras VLANs são **executados automaticamente** pela ferramenta: [**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger)
|
||||
|
||||
#### Double Tagging
|
||||
|
||||
Se um atacante souber o valor do **MAC, IP e VLAN ID do host vítima**, ele pode tentar **double tag um frame** com sua VLAN designada e a VLAN da vítima e enviar um pacote. Como a **vítima não conseguirá se conectar de volta** com o atacante, a **melhor opção para o atacante é se comunicar via UDP** com protocolos que podem realizar algumas ações interessantes (como SNMP).
|
||||
Se um atacante souber o valor do **MAC, IP and VLAN ID of the victim host**, ele pode tentar **double tag a frame** com sua VLAN designada e a VLAN da vítima e enviar um pacote. Como a **vítima não conseguirá conectar de volta** com o atacante, a **melhor opção para o atacante é comunicar via UDP** para protocolos que possam realizar ações interessantes (como SNMP).
|
||||
|
||||
Outra opção para o atacante é lançar um **TCP port scan spoofing um IP controlado pelo atacante e acessível pela vítima** (provavelmente através da internet). Então, o atacante poderia sniffar no segundo host de sua propriedade se ele receber alguns pacotes da vítima.
|
||||
Outra opção para o atacante é realizar um **TCP port scan spoofing an IP controlled by the attacker and accessible by the victim** (provavelmente através da Internet). Então, o atacante poderia sniff no segundo host de sua propriedade se este receber alguns pacotes da vítima.
|
||||
|
||||
.png>)
|
||||
|
||||
Para realizar este ataque, você pode usar scapy: `pip install scapy`
|
||||
Para realizar este ataque você pode usar scapy: `pip install scapy`
|
||||
```python
|
||||
from scapy.all import *
|
||||
# Double tagging with ICMP packet (the response from the victim isn't double tagged so it will never reach the attacker)
|
||||
packet = Ether()/Dot1Q(vlan=1)/Dot1Q(vlan=20)/IP(dst='192.168.1.10')/ICMP()
|
||||
sendp(packet)
|
||||
```
|
||||
#### Bypass de Segmentação Lateral de VLAN <a href="#d679" id="d679"></a>
|
||||
#### Bypass de Segmentação VLAN Lateral <a href="#d679" id="d679"></a>
|
||||
|
||||
Se você tem **acesso a um switch ao qual está diretamente conectado**, você tem a capacidade de **bypass da segmentação VLAN** dentro da rede. Simplesmente **mude a porta para trunk mode** (também conhecido como trunk), crie interfaces virtuais com os IDs das VLANs alvo e configure um endereço IP. Você pode tentar solicitar o endereço dinamicamente (DHCP) ou 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
|
||||
{{#endref}}
|
||||
|
||||
#### Bypass de VLAN Privada de Camada 3
|
||||
#### Bypass de Private VLAN na 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 wireless para convidados, configurações de **port isolation (também conhecidas como private VLAN)** são implementadas para impedir que clientes conectados a um wireless access point comuniquem-se diretamente entre si. No entanto, foi identificada uma técnica que pode contornar essas medidas de isolamento. Essa técnica explora a ausência de ACLs de rede ou sua configuração incorreta, 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 MAC address do roteador**. Isso faz com que o roteador encaminhe o pacote equivocadamente para o cliente alvo. Essa abordagem é semelhante à usada em Double Tagging Attacks, onde a capacidade de controlar um host acessível à vítima é usada para explorar a falha de segurança.
|
||||
|
||||
**Passos Chave do Ataque:**
|
||||
Principais Etapas 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. **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.
|
||||
1. Criação do Pacote: Um pacote é especialmente forjado para incluir o IP do cliente alvo mas com o MAC address do roteador.
|
||||
2. Explorando o Comportamento do Roteador: O pacote forjado é enviado ao roteador que, devido à configuração, redireciona o pacote para o cliente alvo, contornando o isolamento provido pelas configurações de private VLAN.
|
||||
|
||||
### Ataques VTP
|
||||
### VTP Attacks
|
||||
|
||||
O VTP (VLAN Trunking Protocol) centraliza a gestão de VLANs. Ele utiliza números de revisão para manter a integridade do banco de dados de VLAN; qualquer modificação incrementa esse número. Os switches adotam configurações com números de revisão mais altos, atualizando seus próprios bancos de dados de VLAN.
|
||||
VTP (VLAN Trunking Protocol) centraliza o gerenciamento de VLANs. Ele utiliza revision numbers para manter a integridade do banco de dados de VLANs; qualquer modificação incrementa esse número. Switches adotam configurações com revision numbers mais altos, atualizando seus próprios bancos de dados de VLAN.
|
||||
|
||||
#### Funções do Domínio VTP
|
||||
#### VTP Domain Roles
|
||||
|
||||
- **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.
|
||||
- **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.
|
||||
- VTP Server: Gerencia VLANs—cria, deleta, modifica. Ele broadcast VTP announcements para os membros do domínio.
|
||||
- VTP Client: Recebe VTP announcements para sincronizar seu banco de dados de VLAN. Essa função é restrita e não permite modificações locais na configuração de VLAN.
|
||||
- VTP Transparent: Não participa de VTP updates mas encaminha VTP announcements. Não é afetado por VTP attacks e mantém um revision number constante de zero.
|
||||
|
||||
#### Tipos de Anúncios VTP
|
||||
#### VTP Advertisement Types
|
||||
|
||||
- **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.
|
||||
- Summary Advertisement: Broadcast pelo VTP server a cada 300 segundos, contendo informações essenciais do domínio.
|
||||
- Subset Advertisement: Enviado após alterações na configuração de VLAN.
|
||||
- Advertisement Request: Emitido por um VTP client para solicitar um Summary Advertisement, tipicamente em resposta à detecção de um configuration revision number 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.
|
||||
Vulnerabilidades do VTP são exploráveis exclusivamente via trunk ports, já que VTP announcements circulam somente por eles. Cenários pós-DTP attack podem pivotar para VTP. Ferramentas como Yersinia podem facilitar VTP attacks, visando apagar o VLAN database e, efetivamente, desestabilizar a rede.
|
||||
|
||||
Nota: Esta discussão refere-se à versão 1 do VTP (VTPv1).
|
||||
````bash
|
||||
%% yersinia -G # Launch Yersinia in graphical mode ```
|
||||
````
|
||||
No modo gráfico do Yersinia, escolha a opção de deletar todas as VLANs VTP para purgar o banco de dados VLAN.
|
||||
Observação: Esta discussão refere-se à versão 1 do VTP (VTPv1).
|
||||
```bash
|
||||
yersinia -G # Launch Yersinia in graphical mode
|
||||
```
|
||||
No modo gráfico do Yersinia, escolha a opção deleting all VTP vlans para limpar o banco de dados VLAN.
|
||||
|
||||
### Ataques STP
|
||||
### STP Attacks
|
||||
|
||||
**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 conseguir capturar quadros BPDU em suas interfaces, é improvável que você consiga ter sucesso em um STP attack.**
|
||||
|
||||
#### **DoS BPDU STP**
|
||||
#### **STP BPDU DoS**
|
||||
|
||||
Enviando muitos BPDUs TCP (Notificação de Mudança de Topologia) ou Conf (os BPDUs que são enviados quando a topologia é criada), os switches ficam sobrecarregados e param de funcionar corretamente.
|
||||
Ao enviar muitos BPDUs TCP (Topology Change Notification) ou Conf (the BPDUs that are sent when the topology is created), os switches ficam sobrecarregados e deixam de funcionar corretamente.
|
||||
```bash
|
||||
yersinia stp -attack 2
|
||||
yersinia stp -attack 3
|
||||
#Use -M to disable MAC spoofing
|
||||
```
|
||||
#### **Ataque STP TCP**
|
||||
#### **STP TCP Attack**
|
||||
|
||||
Quando um TCP é enviado, a tabela CAM dos switches será deletada em 15s. Então, se você estiver enviando continuamente esse tipo de pacotes, a tabela CAM será reiniciada continuamente (ou a cada 15 segundos) e quando for reiniciada, o switch se comporta como um hub.
|
||||
Quando um TCP é enviado, a CAM table dos switches será apagada em 15s. Então, se você enviar continuamente esse tipo de pacotes, a CAM table será reiniciada continuamente (ou a cada 15s) e, quando for reiniciada, o switch se comporta como um hub
|
||||
```bash
|
||||
yersinia stp -attack 1 #Will send 1 TCP packet and the switch should restore the CAM in 15 seconds
|
||||
yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen
|
||||
```
|
||||
#### **Ataque STP Root**
|
||||
#### **STP Root Attack**
|
||||
|
||||
O atacante simula o comportamento de um switch para se tornar o root STP da rede. Então, mais dados passarão por ele. Isso é interessante quando você está conectado a dois switches diferentes.\
|
||||
Isso é feito enviando pacotes BPDUs CONF dizendo que o valor de **prioridade** é menor do que a prioridade real do switch root atual.
|
||||
O atacante simula o comportamento de um switch para se tornar o STP root da rede. Então, mais tráfego passará por ele. Isto é interessante quando você está conectado a dois switches diferentes.\
|
||||
Isso é feito enviando pacotes BPDUs CONF dizendo que o valor **priority** é menor do que a prioridade atual do root switch.
|
||||
```bash
|
||||
yersinia stp -attack 4 #Behaves like the root switch
|
||||
yersinia stp -attack 5 #This will make the device behaves as a switch but will not be root
|
||||
```
|
||||
**Se o atacante estiver conectado a 2 switches, ele pode ser a raiz da nova árvore e todo o tráfego entre esses switches passará por ele** (um ataque MITM será realizado).
|
||||
**Se o atacante estiver conectado a 2 switches, ele pode ser a raiz da nova árvore e todo o tráfego entre esses switches passará por ele** (um MITM attack será realizado).
|
||||
```bash
|
||||
yersinia stp -attack 6 #This will cause a DoS as the layer 2 packets wont be forwarded. You can use Ettercap to forward those packets "Sniff" --> "Bridged sniffing"
|
||||
ettercap -T -i eth1 -B eth2 -q #Set a bridge between 2 interfaces to forwardpackages
|
||||
```
|
||||
### Ataques CDP
|
||||
### CDP Attacks
|
||||
|
||||
O Protocolo de Descoberta CISCO (CDP) é essencial para a comunicação entre dispositivos CISCO, permitindo que eles **se identifiquem e compartilhem detalhes de configuração**.
|
||||
CISCO Discovery Protocol (CDP) é essencial para a comunicação entre dispositivos CISCO, permitindo que eles **se identifiquem entre si e compartilhem detalhes de configuração**.
|
||||
|
||||
#### Coleta de Dados Passiva <a href="#id-0e0f" id="id-0e0f"></a>
|
||||
|
||||
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.
|
||||
O CDP está configurado para transmitir informações por todas as portas, o que pode representar um risco de segurança. Um atacante, ao conectar-se a uma porta do switch, pode empregar 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 mirar em 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 CDP Table Flooding <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:
|
||||
Uma abordagem mais agressiva envolve lançar um Denial of Service (DoS) ao sobrecarregar 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
|
||||
sudo yersinia cdp -attack 1 # Initiates a DoS attack by simulating fake CISCO devices
|
||||
# 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 muitas vezes é referido como **“paralisia da rede”** devido ao consumo excessivo de recursos.
|
||||
Durante este ataque, a CPU do switch e a CDP neighbor table ficam fortemente sobrecarregadas, levando ao que muitas vezes é referido como **“paralisia de rede”** devido ao consumo excessivo de recursos.
|
||||
|
||||
#### Ataque de Impersonação CDP
|
||||
#### CDP Impersonation Attack
|
||||
```bash
|
||||
sudo yersinia cdp -attack 2 #Simulate a new CISCO device
|
||||
sudo yersinia cdp -attack 0 #Send a CDP packet
|
||||
```
|
||||
Você também pode usar [**scapy**](https://github.com/secdev/scapy/). Certifique-se de instalá-lo com o pacote `scapy/contrib`.
|
||||
|
||||
### Ataques VoIP e a Ferramenta VoIP Hopper
|
||||
### Ataques VoIP e a ferramenta VoIP Hopper
|
||||
|
||||
Os telefones VoIP, cada vez mais integrados com dispositivos IoT, oferecem funcionalidades como desbloquear portas ou controlar termostatos através de números de telefone especiais. No entanto, essa integração pode apresentar riscos de segurança.
|
||||
Telefones VoIP, cada vez mais integrados com dispositivos IoT, oferecem funcionalidades como destrancar portas ou controlar termostatos por números de telefone especiais. No entanto, essa integração pode representar riscos de segurança.
|
||||
|
||||
A ferramenta [**voiphopper**](http://voiphopper.sourceforge.net) é projetada para emular um telefone VoIP em vários ambientes (Cisco, Avaya, Nortel, Alcatel-Lucent). Ela descobre o ID da VLAN da rede de voz usando protocolos como CDP, DHCP, LLDP-MED e 802.1Q ARP.
|
||||
A ferramenta [**voiphopper**](http://voiphopper.sourceforge.net) foi projetada para emular um telefone VoIP em vários ambientes (Cisco, Avaya, Nortel, Alcatel-Lucent). Ela descobre o VLAN ID da rede de voz usando protocolos como CDP, DHCP, LLDP-MED e 802.1Q ARP.
|
||||
|
||||
**VoIP Hopper** oferece três modos para o Protocolo de Descoberta Cisco (CDP):
|
||||
**VoIP Hopper** oferece três modos para o Cisco Discovery Protocol (CDP):
|
||||
|
||||
1. **Modo Sniff** (`-c 0`): Analisa pacotes de rede para identificar o ID da VLAN.
|
||||
2. **Modo Spoof** (`-c 1`): Gera pacotes personalizados imitando os de um dispositivo VoIP real.
|
||||
3. **Modo Spoof com Pacote Pré-fabricado** (`-c 2`): Envia pacotes idênticos aos de um modelo específico de telefone IP Cisco.
|
||||
1. **Sniff Mode** (`-c 0`): Analisa pacotes de rede para identificar o VLAN ID.
|
||||
2. **Spoof Mode** (`-c 1`): Gera pacotes personalizados imitando os de um dispositivo VoIP real.
|
||||
3. **Spoof with Pre-made Packet Mode** (`-c 2`): Envia pacotes idênticos aos de um modelo específico de telefone IP Cisco.
|
||||
|
||||
O modo preferido para velocidade é o terceiro. Ele requer a especificação de:
|
||||
O modo preferido para velocidade é o terceiro. Ele requer especificar:
|
||||
|
||||
- A interface de rede do atacante (`-i` parâmetro).
|
||||
- O nome do dispositivo VoIP sendo emulado (`-E` parâmetro), aderindo ao formato de nomenclatura Cisco (por exemplo, SEP seguido de um endereço MAC).
|
||||
- A interface de rede do atacante (`-i` parameter).
|
||||
- O nome do dispositivo VoIP a ser emulado (`-E` parameter), seguindo o formato de nomenclatura da Cisco (por exemplo, SEP seguido do endereço MAC).
|
||||
|
||||
Em ambientes corporativos, para imitar um dispositivo VoIP existente, pode-se:
|
||||
Em ambientes corporativos, para mimetizar um dispositivo VoIP existente, pode-se:
|
||||
|
||||
- Inspecionar o rótulo MAC no telefone.
|
||||
- Navegar nas configurações de exibição do telefone para visualizar informações do modelo.
|
||||
- Conectar o dispositivo VoIP a um laptop e observar solicitações CDP usando o Wireshark.
|
||||
- Inspecionar a etiqueta MAC no telefone.
|
||||
- Navegar nas configurações de display do telefone para ver informações do modelo.
|
||||
- Conectar o dispositivo VoIP a um laptop e observar as requisições CDP usando Wireshark.
|
||||
|
||||
Um comando de exemplo para executar a ferramenta no terceiro modo seria:
|
||||
```bash
|
||||
@ -489,36 +493,36 @@ 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**.\
|
||||
**Dois tipos de DoS** podem ser realizados contra servidores DHCP. O primeiro consiste em **simular hosts falsos suficientes para usar todos os possíveis endereços IP**.\
|
||||
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**.
|
||||
|
||||
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.
|
||||
Outra forma de realizar um DHCP DoS é enviar um **pacote DHCP-RELEASE usando como endereço de origem cada IP possível**. Então, o servidor pensará que todos terminaram de usar o IP.
|
||||
```bash
|
||||
yersinia dhcp -attack 1
|
||||
yersinia dhcp -attack 3 #More parameters are needed
|
||||
```
|
||||
Uma maneira mais automática de fazer isso é usando a ferramenta [DHCPing](https://github.com/kamorin/DHCPig)
|
||||
Uma forma mais automática de fazer isso é usar a ferramenta [DHCPing](https://github.com/kamorin/DHCPig)
|
||||
|
||||
Você pode usar os ataques DoS mencionados para forçar os clientes a obter novos leases dentro do ambiente e esgotar servidores legítimos para que eles se tornem não responsivos. Assim, quando os legítimos tentam se reconectar, **você pode servir valores maliciosos mencionados no próximo ataque**.
|
||||
Você pode usar os ataques DoS mencionados para forçar clientes a obter novos leases dentro do ambiente e esgotar servidores legítimos para que se tornem não responsivos. Assim, quando os legítimos tentarem reconectar, você pode fornecer os valores maliciosos mencionados no próximo ataque.
|
||||
|
||||
#### 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 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.
|
||||
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 só permite capturar o tráfego de saída do cliente, perdendo as respostas do gateway real. 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:
|
||||
|
||||
- **Nosso Endereço IP (Anúncio de Gateway)**: Use `-i 10.0.0.100` para anunciar o IP da sua máquina como o gateway.
|
||||
- **Nome de Domínio DNS Local**: Opcionalmente, use `-d example.org` para definir um nome de domínio DNS local.
|
||||
- **IP do Roteador/Gateway Original**: Use `-r 10.0.0.1` para especificar o endereço IP do roteador ou gateway legítimo.
|
||||
- **IP do Servidor DNS Primário**: Use `-p 10.0.0.100` para definir o endereço IP do servidor DNS malicioso que você controla.
|
||||
- **IP do Servidor DNS Secundário**: Opcionalmente, use `-s 10.0.0.1` para definir um IP de servidor DNS secundário.
|
||||
- **Máscara de Rede Local**: Use `-n 255.255.255.0` para definir a máscara de rede para a rede local.
|
||||
- **Interface para Tráfego DHCP**: Use `-I eth1` para escutar o tráfego DHCP em uma interface de rede específica.
|
||||
- **Endereço de Configuração WPAD**: Use `-w “http://10.0.0.100/wpad.dat”` para definir o endereço para a configuração WPAD, auxiliando na interceptação de tráfego web.
|
||||
- **Falsificar IP do Gateway Padrão**: Inclua `-S` para falsificar o endereço IP do gateway padrão.
|
||||
- **Responder a Todos os Pedidos DHCP**: Inclua `-R` para fazer o servidor responder a todos os pedidos DHCP, mas esteja ciente de que isso é barulhento e pode ser detectado.
|
||||
- **Our IP Address (Gateway Advertisement)**: Use `-i 10.0.0.100` para anunciar o IP da sua máquina como o gateway.
|
||||
- **Local DNS Domain Name**: Opcionalmente, use `-d example.org` para definir um nome de domínio DNS local.
|
||||
- **Original Router/Gateway IP**: Use `-r 10.0.0.1` para especificar o endereço IP do roteador ou gateway legítimo.
|
||||
- **Primary DNS Server IP**: Use `-p 10.0.0.100` para definir o endereço IP do servidor DNS malicioso que você controla.
|
||||
- **Secondary DNS Server IP**: Opcionalmente, use `-s 10.0.0.1` para definir um IP de servidor DNS secundário.
|
||||
- **Netmask of Local Network**: Use `-n 255.255.255.0` para definir a máscara de rede da rede local.
|
||||
- **Interface for DHCP Traffic**: Use `-I eth1` para escutar o tráfego DHCP em uma interface de rede específica.
|
||||
- **WPAD Configuration Address**: Use `-w “http://10.0.0.100/wpad.dat”` para definir o endereço de configuração WPAD, auxiliando na interceptação do tráfego web.
|
||||
- **Spoof Default Gateway IP**: Inclua `-S` para forjar o endereço IP do gateway padrão.
|
||||
- **Respond to All DHCP Requests**: Inclua `-R` para fazer o servidor responder a todas as requisições DHCP, mas esteja ciente de que isso é barulhento e pode ser detectado.
|
||||
|
||||
Usando corretamente essas opções, um servidor DHCP malicioso pode ser estabelecido para interceptar o tráfego de rede de forma eficaz.
|
||||
Ao usar essas opções corretamente, um servidor DHCP malicioso pode ser estabelecido para interceptar o tráfego de rede de forma eficaz.
|
||||
```python
|
||||
# Example to start a rogue DHCP server with specified options
|
||||
!python /usr/share/responder/DHCP.py -i 10.0.0.100 -d example.org -r 10.0.0.1 -p 10.0.0.100 -s 10.0.0.1 -n 255.255.255.0 -I eth1 -w "http://10.0.0.100/wpad.dat" -S -R
|
||||
@ -527,61 +531,63 @@ 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:
|
||||
|
||||
- Moagem ativa de senhas por força bruta via EAP
|
||||
- Atacando o servidor RADIUS com conteúdo EAP malformado _\*\*_(explorações)
|
||||
- Captura de mensagens EAP e quebra de senha 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
|
||||
- Brute-force ativo contra senhas via EAP
|
||||
- Atacando o servidor RADIUS com conteúdo EAP malformado _\*\*_(exploits)
|
||||
- Captura de mensagens EAP e quebra offline de senhas (EAP-MD5 e PEAP)
|
||||
- Forçar autenticação EAP-MD5 para contornar a validação de certificados TLS
|
||||
- Injetar tráfego de rede malicioso ao autenticar usando um hub ou similar
|
||||
|
||||
Se o atacante estiver entre a vítima e o servidor de autenticação, ele pode tentar degradar (se necessário) o protocolo de autenticação para EAP-MD5 e capturar a tentativa de autenticação. Em seguida, ele pode usar força bruta para isso:
|
||||
Se o atacante estiver entre a vítima e o servidor de autenticação, ele poderia tentar degradar (se necessário) o protocolo de autenticação para EAP-MD5 e capturar a tentativa de autenticação. Então, ele poderia brute-force isso usando:
|
||||
```
|
||||
eapmd5pass –r pcap.dump –w /usr/share/wordlist/sqlmap.txt
|
||||
```
|
||||
### FHRP (GLBP & HSRP) Attacks <a href="#id-6196" id="id-6196"></a>
|
||||
### FHRP (GLBP & HSRP) Ataques <a href="#id-6196" id="id-6196"></a>
|
||||
|
||||
**FHRP** (First Hop Redundancy Protocol) é uma classe de protocolos de rede projetados para **criar um sistema de roteamento redundante quente**. Com o FHRP, roteadores físicos podem ser combinados em um único dispositivo lógico, o que aumenta a tolerância a falhas e ajuda a distribuir a carga.
|
||||
**FHRP** (First Hop Redundancy Protocol) é uma classe de protocolos de rede projetada para **criar um sistema de roteamento redundante ativo**. Com FHRP, roteadores físicos podem ser combinados em um único dispositivo lógico, o que aumenta a tolerância a falhas e ajuda a distribuir a carga.
|
||||
|
||||
**Engenheiros da Cisco Systems desenvolveram dois protocolos FHRP, GLBP e HSRP.**
|
||||
|
||||
|
||||
{{#ref}}
|
||||
glbp-and-hsrp-attacks.md
|
||||
{{#endref}}
|
||||
|
||||
### 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 IPsec AH e ESP opcionais dentro do IPv6.
|
||||
Existem três versões do Routing Information Protocol (RIP): RIP, RIPv2 e RIPng. RIP e RIPv2 enviam datagramas para peers via UDP na porta 520, enquanto o RIPng transmite datagramas por broadcast para a porta UDP 521 via multicast IPv6. O suporte para autenticação MD5 foi introduzido pelo RIPv2. Por outro lado, o RIPng não incorpora autenticação nativa; em vez disso, depende dos cabeçalhos opcionais IPsec AH e ESP no 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.
|
||||
- **RIP and RIPv2:** Comunicação é feita através de datagramas UDP na porta 520.
|
||||
- **RIPng:** Utiliza a porta UDP 521 para broadcast de datagramas via multicast IPv6.
|
||||
|
||||
Observe que o RIPv2 suporta autenticação MD5, enquanto o RIPng não inclui autenticação nativa, confiando em cabeçalhos IPsec AH e ESP no IPv6.
|
||||
Note que o RIPv2 suporta autenticação MD5 enquanto o RIPng não inclui autenticação nativa, apoiando-se nos cabeçalhos IPsec AH e ESP no IPv6.
|
||||
|
||||
### EIGRP Attacks
|
||||
### EIGRP Ataques
|
||||
|
||||
**EIGRP (Enhanced Interior Gateway Routing Protocol)** é um protocolo de roteamento dinâmico. **É um protocolo de vetor de distância.** Se não houver **autenticação** e configuração de interfaces passivas, um **intruso** pode interferir no roteamento EIGRP e causar **envenenamento de tabelas de roteamento**. Além disso, a rede EIGRP (em outras palavras, sistema autônomo) **é plana e não possui segmentação em zonas**. Se um **atacante injetar uma rota**, é provável que essa rota **se espalhe** por todo o sistema EIGRP autônomo.
|
||||
**EIGRP (Enhanced Interior Gateway Routing Protocol)** é um protocolo de roteamento dinâmico. **É um protocolo distance-vector.** Se não houver **autenticação** e configuração de interfaces passivas, um **intruso** pode interferir no roteamento EIGRP e causar **envenenamento das tabelas de roteamento**. Além disso, a rede EIGRP (ou seja, o sistema autônomo) **é plana e não possui segmentação em zonas**. Se um **atacante injeta uma rota**, é provável que essa rota se **espalhe** por todo o sistema autônomo EIGRP.
|
||||
|
||||
Atacar um sistema EIGRP requer **estabelecer uma vizinhança com um roteador EIGRP legítimo**, o que abre muitas possibilidades, desde reconhecimento básico até várias injeções.
|
||||
Atacar um sistema EIGRP requer **estabelecer uma relação de vizinhança com um roteador EIGRP legítimo**, o que abre muitas possibilidades, desde reconhecimento básico até diversas injeções.
|
||||
|
||||
[**FRRouting**](https://frrouting.org/) permite implementar **um roteador virtual que suporta BGP, OSPF, EIGRP, RIP e outros protocolos.** Tudo o que você precisa fazer é implantá-lo no sistema do atacante e você pode realmente se passar por um roteador legítimo no domínio de roteamento.
|
||||
|
||||
[**FRRouting**](https://frrouting.org/) permite implementar **um roteador virtual que suporta BGP, OSPF, EIGRP, RIP e outros protocolos.** Tudo o que você precisa fazer é implantá-lo no sistema do seu atacante e você pode realmente fingir ser um roteador legítimo no domínio de roteamento.
|
||||
|
||||
{{#ref}}
|
||||
eigrp-attacks.md
|
||||
{{#endref}}
|
||||
|
||||
[**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.
|
||||
[**Coly**](https://code.google.com/p/coly/) tem capacidade para interceptar broadcasts EIGRP. Também permite a injeção de pacotes, que podem ser utilizados para alterar configurações de roteamento.
|
||||
|
||||
### OSPF
|
||||
|
||||
No protocolo Open Shortest Path First (OSPF), **a autenticação MD5 é comumente empregada para garantir comunicação segura entre roteadores**. No entanto, essa medida de segurança pode ser comprometida usando ferramentas como Loki e John the Ripper. Essas ferramentas são capazes de capturar e quebrar hashes MD5, expondo a chave de autenticação. Uma vez que essa chave é obtida, ela pode ser usada para introduzir novas informações de roteamento. Para configurar os parâmetros da rota e estabelecer a chave comprometida, as abas _Injection_ e _Connection_ são utilizadas, respectivamente.
|
||||
No Open Shortest Path First (OSPF) **a autenticação MD5 é comumente empregada para garantir comunicação segura entre roteadores**. No entanto, essa medida de segurança pode ser comprometida usando ferramentas como Loki e John the Ripper. Essas ferramentas são capazes de capturar e quebrar hashes MD5, expondo a chave de autenticação. Uma vez obtida essa chave, ela pode ser usada para introduzir novas informações de roteamento. Para configurar os parâmetros da rota e definir a chave comprometida, utilizam-se respectivamente as abas _Injection_ e _Connection_.
|
||||
|
||||
- **Capturando e Quebrando Hashes MD5:** Ferramentas como Loki e John the Ripper são usadas para esse propósito.
|
||||
- **Configurando Parâmetros de Rota:** Isso é feito através da aba _Injection_.
|
||||
- **Definindo a Chave Comprometida:** A chave é configurada na aba _Connection_.
|
||||
- **Captura e quebras de hashes MD5:** Ferramentas como Loki e John the Ripper são usadas para isso.
|
||||
- **Configuração dos parâmetros da rota:** Feita através da aba _Injection_.
|
||||
- **Definição da chave comprometida:** A chave é configurada na aba _Connection_.
|
||||
|
||||
### Other Generic Tools & Sources
|
||||
|
||||
- [**Above**](https://github.com/c4s73r/Above): Ferramenta para escanear tráfego de rede e encontrar vulnerabilidades
|
||||
- Você pode encontrar algumas **mais informações sobre ataques de rede** [**aqui**](https://github.com/Sab0tag3d/MITM-cheatsheet).
|
||||
- Você pode encontrar algumas **mais informações sobre network attacks** [**here**](https://github.com/Sab0tag3d/MITM-cheatsheet).
|
||||
|
||||
## **Spoofing**
|
||||
|
||||
@ -596,7 +602,7 @@ Verifique a [seção anterior](#arp-spoofing).
|
||||
|
||||
### ICMPRedirect
|
||||
|
||||
ICMP Redirect consiste em enviar um pacote ICMP tipo 1 código 5 que indica que o atacante é a melhor maneira de alcançar um IP. Assim, quando a vítima quiser contatar o IP, enviará o pacote através do atacante.
|
||||
ICMP Redirect consiste em enviar um ICMP packet type 1 code 5 que indica que o attacker é o melhor caminho para alcançar um IP. Então, quando a victim quiser contatar o IP, ela enviará o packet através do attacker.
|
||||
```bash
|
||||
Ettercap
|
||||
icmp_redirect
|
||||
@ -604,7 +610,7 @@ hping3 [VICTIM IP ADDRESS] -C 5 -K 1 -a [VICTIM DEFAULT GW IP ADDRESS] --icmp-gw
|
||||
```
|
||||
### DNS Spoofing
|
||||
|
||||
O atacante irá resolver alguns (ou todos) os domínios que a vítima solicitar.
|
||||
O attacker resolverá alguns (ou todos) os domínios que a victim solicitar.
|
||||
```bash
|
||||
set dns.spoof.hosts ./dns.spoof.hosts; dns.spoof on
|
||||
```
|
||||
@ -615,7 +621,7 @@ dig @localhost domain.example.com # Test the configured DNS
|
||||
```
|
||||
### Gateways Locais
|
||||
|
||||
Múltiplas rotas para sistemas e redes frequentemente existem. Ao construir uma lista de endereços MAC dentro da rede local, use _gateway-finder.py_ para identificar hosts que suportam o encaminhamento IPv4.
|
||||
Frequentemente existem múltiplas rotas para sistemas e redes. Após construir uma lista de MAC addresses na rede local, use _gateway-finder.py_ para identificar hosts que suportam IPv4 forwarding.
|
||||
```
|
||||
root@kali:~# git clone https://github.com/pentestmonkey/gateway-finder.git
|
||||
root@kali:~# cd gateway-finder/
|
||||
@ -633,58 +639,58 @@ 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.
|
||||
Para resolução de nomes local quando consultas DNS falham, sistemas Microsoft dependem de **Link-Local Multicast Name Resolution (LLMNR)** e do **NetBIOS Name Service (NBT-NS)**. De forma semelhante, implementações **Apple Bonjour** e **Linux zero-configuration** utilizam **Multicast DNS (mDNS)** para descobrir sistemas dentro de uma rede. Devido à natureza não autenticada desses protocolos e ao seu funcionamento sobre UDP, enviando mensagens em broadcast, eles podem ser explorados por atacantes que visam redirecionar usuários para serviços maliciosos.
|
||||
|
||||
Você pode se passar por serviços que estão sendo procurados por hosts usando Responder para enviar respostas falsas.\
|
||||
Leia aqui mais informações sobre [como se passar por serviços com Responder](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
|
||||
Você pode se passar por serviços procurados pelos hosts usando o Responder para enviar respostas falsas.\
|
||||
Leia aqui mais informações sobre [how to Impersonate services with Responder](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
|
||||
|
||||
### [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 deste servidor pelos clientes pode ocorrer através de vários mecanismos:
|
||||
Browsers comumente empregam o protocolo **Web Proxy Auto-Discovery (WPAD) para adquirir automaticamente as configurações de proxy**. Isso envolve buscar detalhes de configuração em um servidor, especificamente através de uma URL como "http://wpad.example.org/wpad.dat". A descoberta desse servidor pelos clientes pode ocorrer por vários mecanismos:
|
||||
|
||||
- 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.
|
||||
- Através do **DHCP**, onde a descoberta é facilitada usando uma entrada de código especial 252.
|
||||
- Pelo **DNS**, que envolve buscar por um hostname rotulado _wpad_ dentro do domínio local.
|
||||
- Via **Microsoft LLMNR e NBT-NS**, que são mecanismos de fallback usados quando consultas DNS não obtêm sucesso.
|
||||
|
||||
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 serviços podem ser impersonados usando Responder [verifique isso](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
|
||||
A ferramenta Responder explora esse protocolo atuando como um **servidor WPAD malicioso**. Ela usa DHCP, DNS, LLMNR e NBT-NS para induzir clientes a se conectarem a ela. Para entender melhor como se passar por serviços usando o Responder [check this](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 este 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
|
||||
|
||||
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.
|
||||
Este ataque é muito semelhante ao ARP Spoofing, mas no mundo IPv6. Você pode fazer com que a vítima pense 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
|
||||
```
|
||||
### Spoofing/Inundação de Anúncios de Roteador IPv6
|
||||
### IPv6 Router Advertisement Spoofing/Flooding
|
||||
|
||||
Alguns sistemas operacionais configuram por padrão o gateway a partir dos pacotes RA enviados na rede. Para declarar o atacante como roteador IPv6, você pode usar:
|
||||
Alguns OS configuram por padrão o gateway a partir dos pacotes RA enviados na rede. Para declarar o atacante como roteador IPv6 você pode usar:
|
||||
```bash
|
||||
sysctl -w net.ipv6.conf.all.forwarding=1 4
|
||||
ip route add default via <ROUTER_IPv6> dev wlan0
|
||||
fake_router6 wlan0 fe80::01/16
|
||||
```
|
||||
### Spoofing DHCP IPv6
|
||||
### IPv6 DHCP spoofing
|
||||
|
||||
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.
|
||||
Por padrão, alguns sistemas operacionais tentam configurar o DNS lendo um pacote DHCPv6 na rede. Então, um atacante pode 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>
|
||||
|
||||
mitm6
|
||||
```
|
||||
### HTTP (página falsa e injeção de código JS)
|
||||
### HTTP (fake page and JS code injection)
|
||||
|
||||
## Ataques na Internet
|
||||
## Internet Attacks
|
||||
|
||||
### sslStrip
|
||||
|
||||
Basicamente, o que este ataque faz é, caso o **usuário** tente **acessar** uma página **HTTP** que está **redirecionando** para a versão **HTTPS**. O **sslStrip** irá **manter** uma **conexão HTTP com** o **cliente e** uma **conexão HTTPS com** o **servidor**, permitindo que ele **capture** a conexão em **texto simples**.
|
||||
Basicamente o que este ataque faz é: caso o **user** tente **access** uma página **HTTP** que está **redirecting** para a versão **HTTPS**. O **sslStrip** irá **maintain** uma **HTTP connection with** o **client** e uma **HTTPS connection with** o **server**, então será capaz de **sniff** a conexão em **plain text**.
|
||||
```bash
|
||||
apt-get install sslstrip
|
||||
sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
|
||||
@ -693,27 +699,27 @@ sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
|
||||
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000
|
||||
iptables -A INPUT -p tcp --destination-port 10000 -j ACCEPT
|
||||
```
|
||||
Mais informações [aqui](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf).
|
||||
Mais info [here](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf).
|
||||
|
||||
### sslStrip+ e dns2proxy para contornar HSTS
|
||||
### sslStrip+ and dns2proxy para contornar HSTS
|
||||
|
||||
A **diferença** entre **sslStrip+ e dns2proxy** em relação ao **sslStrip** é que eles **redirecionarão** por exemplo _**www.facebook.com**_ **para** _**wwww.facebook.com**_ (note o **extra** "**w**") e definirão o **endereço deste domínio como o IP do atacante**. Dessa forma, o **cliente** irá **conectar-se** a _**wwww.facebook.com**_ **(o atacante)**, mas nos bastidores **sslstrip+** irá **manter** a **conexão real** via https com **www.facebook.com**.
|
||||
A **diferença** entre **sslStrip+ e dns2proxy** em relação a **sslStrip** é que eles irão **redirecionar**, por exemplo, _**www.facebook.com**_ **para** _**wwww.facebook.com**_ (observe o **"w"** **extra**) e irão definir o **endereço desse domínio como o IP do atacante**. Dessa forma, o **cliente** irá **conectar-se** a _**wwww.facebook.com**_ **(o atacante)**, mas nos bastidores **sslstrip+** irá **manter** a **conexão real** via https com **www.facebook.com**.
|
||||
|
||||
O **objetivo** desta técnica é **evitar HSTS** porque _**wwww**.facebook.com_ **não será** salvo no **cache** do navegador, então o navegador será enganado para realizar a **autenticação do facebook em HTTP**.\
|
||||
Note que para realizar este ataque, a vítima deve tentar acessar inicialmente [http://www.faceook.com](http://www.faceook.com) e não https. Isso pode ser feito modificando os links dentro de uma página http.
|
||||
O **objetivo** desta técnica é **evitar HSTS** porque _**wwww.facebook.com**_ **não** será salvo no **cache** do navegador, então o navegador será enganado a realizar a **autenticação do facebook via HTTP**.\
|
||||
Note que, para realizar esse ataque, a vítima tem que tentar acessar inicialmente [http://www.faceook.com](http://www.faceook.com) e não https. Isso pode ser feito modificando os links dentro de uma página http.
|
||||
|
||||
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).
|
||||
Mais info [here](https://www.bettercap.org/legacy/#hsts-bypass), [here](https://www.slideshare.net/Fatuo__/offensive-exploiting-dns-servers-changes-blackhat-asia-2014) e [here](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 exemplo de** _**wwww.facebook.com**_ **de antes não funcionará mais, pois** _**facebook.com**_ **usa HSTS com `includeSubdomains`.**
|
||||
**sslStrip ou sslStrip+ não funciona 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 irá acessá-lo 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`.**
|
||||
|
||||
TODO: easy-creds, evilgrade, metasploit, factory
|
||||
|
||||
## TCP escutar na porta
|
||||
## TCP listen na porta
|
||||
```bash
|
||||
sudo nc -l -p 80
|
||||
socat TCP4-LISTEN:80,fork,reuseaddr -
|
||||
```
|
||||
## TCP + SSL escutar na porta
|
||||
## TCP + SSL listen in port
|
||||
|
||||
#### Gerar chaves e certificado autoassinado
|
||||
```
|
||||
@ -725,18 +731,18 @@ openssl req -new -key $FILENAME.key -x509 -sha256 -days 3653 -out $FILENAME.crt
|
||||
# Generate the PEM file by just appending the key and certificate files:
|
||||
cat $FILENAME.key $FILENAME.crt >$FILENAME.pem
|
||||
```
|
||||
#### Ouvir usando certificado
|
||||
#### Escutar usando certificado
|
||||
```
|
||||
sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 -
|
||||
```
|
||||
#### Ouça usando certificado e redirecione para os hosts
|
||||
#### Escutar usando certificado e redirecionar para os hosts
|
||||
```
|
||||
sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 openssl-connect:[SERVER]:[PORT],verify=0
|
||||
```
|
||||
Às vezes, se o cliente verificar se a CA é válida, você pode **servir um certificado de outro hostname assinado por uma CA**.\
|
||||
Outro teste interessante é **servir um certificado do hostname solicitado, mas autoassinado**.
|
||||
Às vezes, se o client verificar que a CA é válida, você poderia **servir um certificate de outro hostname assinado por uma CA**.\
|
||||
Outro teste interessante é servir um c**ertificate do hostname solicitado mas self-signed**.
|
||||
|
||||
Outras coisas a testar são tentar assinar o certificado com um certificado válido que não seja uma CA válida. Ou usar a chave pública válida, forçar o uso de um algoritmo como Diffie-Hellman (um que não precise descriptografar nada com a verdadeira chave privada) e, quando o cliente solicitar uma prova da verdadeira chave privada (como um hash), enviar uma prova falsa e esperar que o cliente não verifique isso.
|
||||
Outras coisas para testar são tentar assinar o certificate com um certificate válido que não é uma CA válida. Ou usar a public key válida, forçar o uso de um algorithm como diffie hellman (um que não precise decryptar nada com a real private key) e, quando o client solicitar uma probe da real private key (como um hash), enviar uma probe fake e esperar que o client não verifique isso.
|
||||
|
||||
## Bettercap
|
||||
```bash
|
||||
@ -764,19 +770,19 @@ set wifi.ap.channel 5
|
||||
set wifi.ap.encryption false #If true, WPA2
|
||||
wifi.recon on; wifi.ap
|
||||
```
|
||||
### Notas de Descoberta Ativa
|
||||
### Active Discovery Notes
|
||||
|
||||
Leve em consideração que quando um pacote UDP é enviado para um dispositivo que não possui a porta solicitada, um ICMP (Port Unreachable) é enviado.
|
||||
Tenha em conta que, quando um pacote UDP é enviado para um dispositivo que não possui a porta solicitada, é enviado um ICMP (Port Unreachable).
|
||||
|
||||
### **Descoberta ARP**
|
||||
### **ARP discover**
|
||||
|
||||
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 usados dentro da rede. O PC tem que enviar uma requisição para cada endereço IP possível e somente aqueles que estão sendo usados irão responder.
|
||||
|
||||
### **mDNS (DNS multicast)**
|
||||
### **mDNS (multicast DNS)**
|
||||
|
||||
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".
|
||||
Bettercap envia uma requisição MDNS (a cada X ms) pedindo por **\_services\_.dns-sd.\_udp.local**. A máquina que vê esse pacote normalmente responde a essa requisição. Depois, ele procura apenas máquinas que respondem a "services".
|
||||
|
||||
**Ferramentas**
|
||||
**Tools**
|
||||
|
||||
- Avahi-browser (--all)
|
||||
- Bettercap (net.probe.mdns)
|
||||
@ -784,17 +790,19 @@ Bettercap envia uma solicitação MDNS (a cada X ms) perguntando por **\_service
|
||||
|
||||
### **NBNS (NetBios Name Server)**
|
||||
|
||||
Bettercap transmite pacotes para a porta 137/UDP perguntando pelo nome "CKAAAAAAAAAAAAAAAAAAAAAAAAAAA".
|
||||
Bettercap envia pacotes em broadcast para a porta 137/UDP perguntando pelo nome "CKAAAAAAAAAAAAAAAAAAAAAAAAAAA".
|
||||
|
||||
### **SSDP (Protocolo Simples de Descoberta de Serviços)**
|
||||
### **SSDP (Simple Service Discovery Protocol)**
|
||||
|
||||
Bettercap transmite pacotes SSDP procurando por todos os tipos de serviços (Porta UDP 1900).
|
||||
Bettercap envia pacotes SSDP em broadcast procurando todo tipo de serviços (UDP Port 1900).
|
||||
|
||||
### **WSD (Descoberta de Serviços Web)**
|
||||
### **WSD (Web Service Discovery)**
|
||||
|
||||
Bettercap transmite pacotes WSD procurando por serviços (Porta UDP 3702).
|
||||
Bettercap envia pacotes WSD em broadcast procurando por serviços (UDP Port 3702).
|
||||
|
||||
|
||||
### Telecom / Mobile-Core (GTP) Exploitation
|
||||
|
||||
### Exploração de Telecom / Mobile-Core (GTP)
|
||||
|
||||
{{#ref}}
|
||||
telecom-network-exploitation.md
|
||||
@ -803,8 +811,10 @@ telecom-network-exploitation.md
|
||||
## 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)
|
||||
- **Avaliação de Segurança de Rede: Conheça Sua Rede (3ª edição)**
|
||||
- **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**
|
||||
- **Network Security Assessment: Know Your Network (3rd edition)**
|
||||
- **Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things. By 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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user