El rastreo y la suplantación de paquetes son dos amenazas en evolución en la seguridad de la red. Existen muchas herramientas de suplantación y rastreo de paquetes, como Wireshark, tcpdump, netwox, etc. Algunas de estas herramientas son ampliamente utilizadas por expertos en seguridad, así como por atacantes. Ser capaz de utilizar estas herramientas es importante, pero lo que es más importante en la seguridad de la red es comprender cómo funcionan, es decir, cómo se implementan el rastreo y la suplantación de paquetes en el software.
A continuación se muestra un programa rastreador simple 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 )
En el código anterior, para cada paquete capturado, se invocará la función de devolución de llamada print_pkt()
; esta función imprimirá parte de la información del paquete.
Al olfatear paquetes, ciertos tipos de paquetes pueden resultar de mayor interés. Es posible seleccionar solo ciertos paquetes configurando filtros al diseñar un rastreador. El filtrado de Scapy utiliza la sintaxis BPF (Berkeley Packet Filter).
Ejemplos de filtrado posible con Scapy incluyen:
128.200.0.0/16
Como herramienta de suplantación de paquetes, Scapy permite establecer valores arbitrarios en los campos de diferentes encabezados de paquetes. Por ejemplo, una parte malintencionada puede utilizar la suplantación de IP para invocar un ataque DDoS contra un objetivo. La suplantación de IP es la creación de paquetes IP que tienen una dirección de origen modificada para ocultar la identidad del remitente, para hacerse pasar por otra entidad de la red (un sistema informático, un centro de datos, etc.), o ambas cosas.
Paquete ICMP falso
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 )
Paquetes UDP falsos
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 las técnicas de rastreo y suplantación de identidad para implementar un programa de rastreo y luego falsificación. Necesita dos máquinas virtuales en la misma LAN. Desde la VM A, haga ping a una IP X. Esta acción genera un paquete de solicitud de eco ICMP. Si X está vivo, el programa ping recibirá una respuesta de eco e imprimirá la respuesta. El programa de rastreo y luego falsificación se ejecuta en la VM B, que monitorea la LAN mediante el rastreo de paquetes. Siempre que ve una solicitud de eco ICMP, independientemente de cuál sea la dirección IP de destino, el programa envía inmediatamente una respuesta de eco utilizando la técnica de suplantación de paquetes. Por lo tanto, independientemente de si la máquina X está viva o no, el programa ping siempre recibirá una respuesta, indicando que X está viva.
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" )
Gracias por su interés, ¡este proyecto fue divertido y revelador!