Paket-Sniffing und Spoofing sind zwei sich entwickelnde Bedrohungen für die Netzwerksicherheit. Es gibt viele Paket-Sniffing- und Spoofing-Tools wie Wireshark, tcpdump, netwox usw. Einige dieser Tools werden sowohl von Sicherheitsexperten als auch von Angreifern häufig verwendet. Es ist wichtig, diese Tools verwenden zu können. Wichtiger für die Netzwerksicherheit ist jedoch, zu verstehen, wie diese Tools funktionieren, dh wie Paket-Sniffing und Spoofing in Software implementiert werden.
Unten ist ein einfaches Sniffer-Programm, das Scapy nutzt:
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 )
Im obigen Code wird für jedes erfasste Paket die Rückruffunktion print_pkt()
aufgerufen; Diese Funktion druckt einige Informationen des Pakets aus.
Beim Sniffing von Paketen können bestimmte Pakettypen von erhöhtem Interesse sein. Es ist möglich, nur bestimmte Pakete auszuwählen, indem beim Entwerfen eines Sniffers Filter festgelegt werden. Die Filterung von Scapy verwendet die BPF-Syntax (Berkeley Packet Filter).
Beispiele für mit Scapy mögliche Filterung sind:
128.200.0.0/16
kommen oder dorthin gehen Als Paket-Spoofing-Tool ermöglicht Scapy das Setzen beliebiger Werte in den Feldern verschiedener Paket-Header. Beispielsweise kann IP-Spoofing von einer böswilligen Partei genutzt werden, um einen DDoS-Angriff gegen ein Ziel auszulösen. Unter IP-Spoofing versteht man die Erstellung von IP-Paketen mit einer modifizierten Quelladresse, um entweder die Identität des Absenders zu verbergen, sich als eine andere Netzwerkeinheit (ein Computersystem, ein Rechenzentrum usw.) auszugeben oder beides.
ICMP-Paket fälschen
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 )
UDP-Pakete fälschen
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 )
Kombinieren Sie die Sniffing- und Spoofing-Techniken, um ein Sniff-and-then-Spoof-Programm zu implementieren. Benötigen Sie zwei VMs im selben LAN. Pingen Sie von VM A aus eine IP X. Diese Aktion generiert ein ICMP-Echo-Anforderungspaket. Wenn X aktiv ist, empfängt das Ping-Programm eine Echo-Antwort und gibt die Antwort aus. Das Sniff-and-Then-Spoof-Programm läuft auf VM B, das das LAN durch Paket-Sniffing überwacht. Immer wenn es eine ICMP-Echo-Anfrage sieht, sendet das Programm unabhängig von der Ziel-IP-Adresse sofort eine Echo-Antwort mithilfe der Paket-Spoofing-Technik. Unabhängig davon, ob Maschine X aktiv ist oder nicht, erhält das Ping-Programm daher immer eine Antwort, die anzeigt, dass X aktiv ist.
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" )
Vielen Dank für Ihr Interesse, dieses Projekt hat Spaß gemacht und war aufschlussreich!