Scapy: Det Ultimative Værktøj til Netværksmanipulation
Når man bevæger sig fra at være passiv netværksobservatør (via Wireshark) til aktivt at pille ved pakkernes fundament, er Scapy det værktøj, man rækker ud efter. Det er et “Swiss Army Knife” for ethvert Red Team, Penetration Tester og Security Engineer.
I denne artikel vil vi se på, hvad Scapy er, hvordan man installerer det, og hvordan det bruges i praksis.
1. Hvad er Scapy?
Scapy er et kraftfuldt, interaktivt Python-program og bibliotek til at manipulere netværkspakker. Hvor almindelige netværksprogrammer er begrænset til at lade dig oprette forbindelser via styresystemets indbyggede regler (f.eks. et simpelt TCP-kald), lader Scapy dig overtage fuld kontrol over hele netværksstakken.
Med Scapy kan du:
- Smede (forge) helt egne pakker fra bunden (Ændre MAC-adresser, IP’er og TCP-flags bevidst).
- Avanceret netværksscanning (Nmap på steroider – du kan bygge din egen portscanner på to linjer).
- Sende ugyldige eller ulovlige pakker for at teste, hvordan en firewall (f.eks. IDS/IPS) reagerer.
- Udføre angreb som ARP Spoofing/Poisoning, Ruting-manipulation og VLAN-hopping.
- Sniffe (lytte), decodere og gemme modtagne pakker i gængse
pcap-filer, som Wireshark kan læse.
Kort fortalt: Med Scapy taler du flydende “Netværk”.
2. Installation: Hvordan får man det?
Scapy er designet som et Python-bibliotek, hvilket gør det let at tilføje til dit OS. Det anbefales ofte at køre på Linux (f.eks. Kali Linux eller Ubuntu) for færrest restriktioner på hardware-netværkskort.
Via pip (Python Package Installer): Åbn din terminal og brug pip til at installere det globalt:
# Sørg for at din maskine har python3 og pip installeret:
sudo apt update
sudo apt install python3-pip -y
# Installer selve Scapy
sudo pip3 install scapy
For det visuelle (Optional): Hvis du senere vil have Scapy til lynhurtigt at udrulle visualiseringer (grafer af pakke-samtaler), er det godt at have tcpdump og graphviz på dit OS:
sudo apt install tcpdump graphviz imagemagick -y
3. Praktisk Brug: Hvordan Scapy Virker
Scapy kan køres på to måder: Interaktivt via sin egen terminal (REPL), eller som et importeret bibliotek i et rigtigt Python-script. Vi kigger her på den interaktive terminal, da den er fremragende til læring.
Start Scapy (kræver typisk sudo rettigheder, for at få lov til at sende raw packets ud på dit netværkskort!):
sudo scapy
Du bliver mødt af Scapys grafiske banner og mærksnittede terminal >>>.
Byg en pakke: En Legoklods Metodik
Den helt store styrke ved Scapy er, at netværkslag stables (“stackes”) ovenpå hinanden med et “Division”-tegn (/).
Lad os bygge en ICMP Echo-Request (et klassisk PING) pakkket ind i en IP Pakke:
>>> ping_pakke = IP(dst="8.8.8.8") / ICMP()
Så simpelt er det! Vi definerer, at IP-laget (Layer 3) har en destination, og at payloaden er en tom ICMP besked (Layer 4). Scapy udfylder automatisk alle de manglende felter for dig (f.eks. pakke checksums, din kilde IP, osv.).
Se indholdet af din pakke:
>>> ping_pakke.show()
###[ IP ]###
version = 4
ihl = None
tos = 0x0
len = None
id = 1
flags =
frag = 0
ttl = 64
proto = icmp
chksum = None
src = 192.168.1.50
dst = 8.8.8.8
\options \
###[ ICMP ]###
type = echo-request
code = 0
chksum = None
id = 0x0
seq = 0x0
unused = ''
Afsend og Modtag (Send and Receive)
For at skyde din hjemmebyggede pakke ud, bruges typisk funktionen sr() (Send&Receive Layer 3) eller sr1() (For at returnere blot dét aller første pakke-svar).
>>> svar = sr1(ping_pakke)
Begin emission:
Finished sending 1 packets.
*
Received 1 packets, got 1 answers, remaining 0 packets
Nu kan vi tjekke outputtet og bevise vi fik svar fra Googles server (8.8.8.8):
>>> svar.show()
Andre Eksempler til Sandkassen
- ARP Scan (Find alle enheder på dit sub-netværk):
ans, unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="192.168.1.0/24"), timeout=2) ans.summary(lambda s,r: r.sprintf("%Ether.src% %ARP.psrc%") ) - TCP Syn Scan (Læser om en port er åben (S)A, lukket (R)A, eller filtreret):
ans, unans = sr(IP(dst="10.0.0.5")/TCP(sport=RandShort(), dport=80, flags="S"), timeout=1) ans.summary()
Med Scapy i dit arsenal er barriererne for klassiske netværkstests brudt. Mulighederne afhænger ren og skært af din egen kreativitet (og at du har lovmæssig bemyndigelse til tjekke destinationerne!).
Kilder
- Scapy Official Documentation - Den officielle dokumentation og omfattende brugervejledning til alle Scapys funktioner.
- Scapy GitHub Repository - Det officielle repository for kildekode, issue tracking og community-drevet udvikling.
- Introduction to Scapy (Read the Docs) - En god introduktion til koncepterne bag Scapy og hvordan det adskiller sig fra andre værktøjer.
- Wireshark: The World’s Foremost Network Protocol Analyzer - Komplementært netværksanalyseværktøj til Scapy; bruges til at åbne og analysere pcap-filer skabt med Scapy.
> Quiz: Test din viden
1. Hvad giver Scapy fuld kontrol over?
2. Nævn ét netværksangreb som Scapy kan bruges til at demonstrere.
3. Hvilket programmeringssprog er Scapy baseret på?
4. Hvilken kommando installerer Scapy?