A detecção e falsificação de pacotes são duas ameaças em evolução na segurança da rede. Existem muitas ferramentas de detecção e falsificação de pacotes, como Wireshark, tcpdump, netwox, etc. Algumas dessas ferramentas são amplamente utilizadas por especialistas em segurança, bem como por invasores. Ser capaz de usar essas ferramentas é importante, mas o que é mais importante na segurança de rede é entender como essas ferramentas funcionam, ou seja, como o sniffing e o spoofing de pacotes são implementados no software.
Abaixo está um programa sniffer simples que utiliza Scapy:
from scapy . all import *
print ( "SNIFFING PACKETS" )
def print_pkt ( pkt ):
print ( "Source IP:" , pkt [ IP ]. src )
print ( "Destination IP:" , pkt [ IP ]. dst )
print ( "Protocol:" , pkt [ IP ]. proto )
print ( " n " )
pkt = sniff ( filter = 'icmp' , prn = print_pkt )
No código acima, para cada pacote capturado, a função de retorno de chamada print_pkt()
será invocada; esta função imprimirá algumas informações do pacote.
Ao farejar pacotes, certos tipos de pacotes podem ser de maior interesse. É possível selecionar apenas determinados pacotes definindo filtros ao projetar um sniffer. A filtragem do Scapy usa a sintaxe BPF (Berkeley Packet Filter).
Exemplos de filtragem possíveis com Scapy incluem:
128.200.0.0/16
Como uma ferramenta de falsificação de pacotes, o Scapy permite que valores arbitrários sejam definidos nos campos de diferentes cabeçalhos de pacotes. Por exemplo, a falsificação de IP pode ser usada por uma parte mal-intencionada para invocar um ataque DDoS contra um alvo. Falsificação de IP é a criação de pacotes IP que possuem um endereço de origem modificado para ocultar a identidade do remetente, para representar outra entidade de rede (um sistema de computador, um datacenter, etc.), ou ambos.
Pacote ICMP falsificado
from scapy . all import *
print ( "SENDING SPOOFED ICMP PACKET" )
ip = IP ( src = "1.2.3.4" , dst = "93.184.216.34" ) # IP Layer
icmp = ICMP () # ICMP Layer
pkt = ip / icmp # Construct the complete packet
pkt . show ()
send ( pkt , verbose = 0 )
Falsificar pacotes UDP
from scapy . all import *
print ( "SENDING SPOOFED UDP PACKET" )
ip = IP ( src = "1.2.3.4" , dst = "10.0.2.69" ) # IP Layer
udp = UDP ( sport = 8888 , dport = 9090 ) # UDP Layer
data = "Hello UDP! n " # Payload
pkt = ip / udp / data # Construct the complete packet
pkt . show ()
send ( pkt , verbose = 0 )
Combine as técnicas de sniffing e spoofing para implementar um programa sniff-and-then-spoof. Precisa de duas VMs na mesma LAN. Da VM A, execute ping em um IP X. Esta ação gera um pacote de solicitação de eco ICMP. Se X estiver ativo, o programa ping receberá uma resposta de eco e imprimirá a resposta. O programa sniff-and-then-spoof é executado na VM B, que monitora a LAN por meio da detecção de pacotes. Sempre que vê uma solicitação de eco ICMP, independentemente de qual seja o endereço IP de destino, o programa envia imediatamente uma resposta de eco usando a técnica de falsificação de pacotes. Portanto, independentemente de a máquina X estar ativa ou não, o programa ping sempre receberá uma resposta, indicando que X está ativa.
IP ()
IP (). show ()
IP () / ICMP ()
p = IP () / ICMP ()
p . show ()
p = IP () / UDP ()
p . show ()
p = IP () / UDP () / "This is my UDP packet"
p . show ()
send ( IP () / UDP () / "This is my UDP packet" )
send ( IP ( dst = '10.0.2.7' ) / UDP () / "This is my UDP packet" )
Obrigado pelo seu interesse, este projeto foi divertido e esclarecedor!