Du hast Fragen? Wir haben Antworten! - Bald findet unser nächster Tag der offenen Tür statt!

Logo site

Python Scapy: Alles über das auf Python basierende Tool für Netzwerkpakete

-
5
 Minuten Lesezeit
-
scapy

Scapy ist ein in Python geschriebenes Werkzeug zur Manipulation von Paketen in Computernetzwerken. Es ermöglicht u. a. das Schmieden oder Entschlüsseln von Paketen oder übernimmt Aufgaben wie Scannen, Tracerouting und Unit-Tests. Hier erfährst du alles, was du wissen musst: Vorteile, Funktionsweise, Schulungen...

Im Bereich der Computersicherheit sind das Scannen von Netzwerken und das Simulieren von Angriffen wichtige Aktivitäten. Es gibt viele verschiedene Tools wie Wireshark oder Nmap, aber jedes ist für einen bestimmten Anwendungsfall wie Paketschnüffeln oder Scannen konzipiert.

Daher ist es notwendig, für jede Aufgabe ein anderes Tool zu verwenden, und das kann schnell sehr umständlich werden. Um dieses Problem zu lösen, hat Philippe Biondi Scapy entwickelt: ein auf Python basierendes Tools zur Manipulation von Netzwerkpaketen, mit dem man je nach Bedarf neue Funktionen erstellen kann.

 

💡Auch interessant:

Top der nativen Python Funktionen
Imageio
Python für Dummies Teil 1
Python programmieren lernen
Data Cleaning Python

Was ist Scapy ?

Scapy wurde 2003 erstellt und ist ein Python-Programm, mit dem man Netzwerkpakete senden, untersuchen, sezieren und formen kann. Dies ermöglicht es, Werkzeuge zu bauen, um ein Netzwerk zu sondieren, zu scannen oder anzugreifen.

Es handelt sich also um ein leistungsfähiges interaktives Programm zur Paketmanipulation. Es wird u. a. dazu benutzt, Pakete aus einer Vielzahl von Protokollen zu schmieden oder zu dekodieren, sie zu senden, zu erfassen, Anfragen und Antworten zuzuordnen und vieles mehr.

Die klassischsten Aufgaben wie Scannen, Tracerouting, Probing, Unit-Testing, Angriffe oder Netzwerkentdeckung können mit Leichtigkeit erledigt werden. Dieses Tool kann hping, arpspoof, arp-sk, arping, pof und Teile von Nmap, tcpdump und tshark ersetzen.

Außerdem kann Scapy für bestimmte Aufgaben verwendet werden, die von den meisten Tools nicht unterstützt werden. Dazu gehören das Senden ungültiger Frames, die Injektion von 802.11-Frames, die Kombination von Techniken wie VLAN-Hopping und ARP-Cache-Poisoning.

Einfach ausgedrückt sind die beiden Hauptfunktionen von Scapy das Senden von Paketen und das Empfangen von Antworten. Nachdem das Tool einen Satz von Paketen definiert hat, sendet es diese, empfängt Antworten, ordnet Anfragen den Antworten zu und gibt eine Liste von Anfrage/Antwort-Paketpaaren und eine Liste von nicht zugeordneten Paketen zurück.

Der Vorteil im Vergleich zu Nmap oder hping ist, dass eine Antwort nicht auf „offen“, „geschlossen“ oder „gefiltert“ reduziert wird. Es handelt sich um das komplette Paket.

Es können Funktionen auf höherer Ebene hinzugefügt werden, z. B. für das Tracerouting und das Erhalten der Start-TTL der Anfrage und der Quell-IP der Antwort als Ergebnis. Ein weiteres Beispiel ist eine Funktion, die ein ganzes Netzwerk anpingt und als Antwort eine Liste von Rechnern ausgibt, oder eine Funktion, die einen Portscan durchführt, um einen LaTeX-Bericht zurückzugeben.

Scapy kann interaktiv über seine Kommandozeilenschnittstelle (CLI) oder als Bibliothek verwendet werden, indem sie in Python-Programme importiert wird. Es kann auf Linux, macOS oder Windows ausgeführt werden.

Obwohl es sich um ein Tool ohne grafische Benutzeroberfläche handelt, kann es in andere Visualisierungsprogramme wie Wireshark, GnuPlot, graphviz oder VPython integriert werden.

Was sind die größten Mängel von Networking-Tools?

Um die Vorteile von ScaPy zu verstehen, ist es am einfachsten, die Hauptprobleme der meisten Networking-Tools aufzuzählen. Diese verschiedenen Programme erlauben es nicht, etwas zu bauen, was sich der Autor nicht ausgedacht hat. Sie werden für einen bestimmten Zweck entwickelt und können sich nicht von diesem Zweck lösen.

Ein ARP-Cache-Poisoning-Tool erlaubt zum Beispiel keine doppelte 802.1q-Kapselung. Daher ist es normalerweise notwendig, für jeden neuen Bedarf ein neues Programm zu erstellen.

Außerdem beschränken sich viele Tools auf ein Programmparadigma, das von einer Systemschnittstellen-Shell aus ausgeführt wird. Dies führt zu einer komplexen Syntax für die Beschreibung eines Pakets. Die Lösung ist eine höhere und weniger mächtige Beschreibung in Form von Szenarien, die sich der Entwickler des Tools ausgedacht hat.

Darüber hinaus verwechseln diese Werkzeuge oftmals Dekodierung und Interpretation. Maschinen können zwar hervorragend dekodieren, aber sie sind nicht in der Lage zu interpretieren. Diese Aufgabe ist dem Menschen vorbehalten.

Einige Programme versuchen, dieses Verhalten zu imitieren, indem sie z. B. „Dieser Port ist offen“ statt „Ich habe einen SYN-ACK erhalten“ melden. Dabei machen sie jedoch häufig Fehler.

Eine solche Unterstützung kann für Anfänger eine große Hilfe sein, aber erfahrene Benutzer wissen, dass sie viel Zeit damit verbringen werden, aus der Interpretation des Programms zu schließen, was wirklich passiert ist.

Dabei geht eine große Menge an Informationen verloren. Oft ist es notwendig, tcpdump -xX zu verwenden, um alles zu dekodieren und zu interpretieren, was dem Programm entgangen ist.

Selbst Programme, die nur dekodieren, geben nicht alle Informationen weiter, die sie erhalten haben. Sie bieten nur die Sicht auf das Netzwerk, die ihr Schöpfer für ausreichend hält. Sie ist daher unvollständig.

 

💡Auch interessant:

PySpark – Alles wissenswerte
Python – Vermeide diese Fehler
API mit Python Datenbank verbinden
Webhooks in Python
Python für Fortgeschrittene

Netzwerk-Tools in 2 Zeilen Python mit ScaPy

ScaPy versucht seinerseits, diese verschiedenen Schwachpunkte zu überwinden. Es erlaubt dir, jedes Paket zu bauen, das du willst, und verwendet ein flexibles Modell, um willkürliche Grenzen zu vermeiden. Der Benutzer kann jeden beliebigen Wert in ein Feld setzen und sie nach Belieben zusammenstellen.

Für die Beschreibung von Paketen bietet ScaPy eine spezielle Sprache (Domain Specific Language oder DSL), die eine mächtige und schnelle Beschreibung für jeden Typ ermöglicht.

Die Verwendung der Python-Syntax und eines Python-Interpreters für diese DSL bringt viele Vorteile mit sich. Es ist nicht nötig, einen separaten Interpreter zu schreiben, die Nutzer müssen keine zusätzliche Sprache lernen und profitieren von einer vollständigen, prägnanten und mächtigen Sprache.

Es ist möglich, ein Paket oder einen Satz von Paketen in Form von Schichten zu beschreiben, die übereinander gestapelt sind. Die Felder in jeder Schicht haben nützliche Standardwerte, die überladen werden können. Und der Benutzer ist nicht gezwungen, vorgegebene Methoden oder Templates zu verwenden.

Dadurch entfällt die Notwendigkeit, jedes Mal ein neues Werkzeug zu schreiben, wenn ein anderes Szenario benötigt wird. Anstatt 60 Zeilen zu verwenden, um ein Paket in C zu beschreiben, braucht man mit Scapy nur eine Zeile und eine weitere Zeile, um das Ergebnis auszudrucken. Auf diese Weise können 90 % der Zeilen für Netzwerksondierungswerkzeuge in zwei Zeilen umgeschrieben werden.

Eine Umfrage für viele Interpretationen

Bei der Befragung eines Netzwerks werden viele Stimuli gesendet, von denen nur einige eine Antwort erhalten. Durch die Wahl des richtigen Stimulus erhält man die Informationen durch die Antworten oder das Ausbleiben von Antworten. Somit ist die Netzwerkentdeckung eine Black-Box-Testpraxis.

Im Gegensatz zu vielen anderen Tools gibt ScaPy alle Informationen, wie die gesendeten Stimuli und die erhaltenen Antworten, heraus. Erst durch die Untersuchung der Daten erhält der Nutzer die gewünschten Informationen.

Wenn der Datensatz klein ist, kann der Nutzer ihn erforschen. In anderen Fällen hängt die Interpretation der Daten vom Standpunkt ab, den man einnimmt.

Die meisten Tools wählen einen Blickwinkel und entfernen alle Daten, die nicht mit diesem in Verbindung stehen. Dies ist bei ScaPy nicht der Fall, da es die Rohdaten vollständig ausgibt.

Dadurch können die Daten viele Male verwendet werden, so dass sich der Blickwinkel während der Analyse ändern kann. Es ist also möglich, eine einzelne Umfrage als Scan oder Traceroute durchzuführen und sie viele Male zu interpretieren.

ScaPy entschlüsselt, ohne zu versuchen zu interpretieren

Im Gegensatz zu diesen Tools versucht ScaPy nicht, die Antworten nach einer Netzwerkumfrage zu interpretieren. Es entschlüsselt sie lediglich und verleiht ihnen Fakten.

Dadurch werden Fehlinterpretationen, die das Tool macht, vermieden. Beispielsweise melden einige Scanner nach dem Empfang eines ICMP-Pakets mit unerreichbarem Ziel einen TCP-Port, der von der Firewall gefiltert wurde. Dies kann jedoch auch bedeuten, dass es keinen Host gab, an den das Paket weitergeleitet werden konnte. Die Interpretation der Ergebnisse durch die Tools kann daher mehr Schaden als Nutzen anrichten, indem sie Verzerrungen in die Ergebnisse injiziert. ScaPy vermeidet dieses Problem, und das ist ein echter Pluspunkt, der es fortgeschrittenen Benutzern erspart, die Interpretation zurückzuentwickeln, um daraus Fakten abzuleiten.

Fazit: Scapy, eines der besten Tools zur Paketbearbeitung in Python

Im Vergleich zu anderen Networking-Tools hat Scapy mehrere Vorteile. Sein Paketbeschreibungsparadigma ist effizient und flexibel, es ist möglich, mehrere Interpretationen aus einer einzigen Umfrage zu ziehen, und die Umfrageergebnisse werden dekodiert, ohne interpretiert zu werden.

Als Steuerpult verwendet Scapy den Python-Interpreter. Dadurch ist es möglich, die Sprache Python direkt zu verwenden, um Variablen zuzuweisen, Schleifen zu verwenden oder Funktionen zu definieren.

Um zu lernen, wie man Python und Scapy verwendet, kannst du dich für DataScientest entscheiden. Unsere verschiedenen Kurse im Bereich Data Science beinhalten ein Modul, das sich ausschließlich mit dieser Programmiersprache befasst.

In unseren Kursen kannst du alle Fähigkeiten erwerben, die du brauchst, um als Data Analyst, Data Scientist, Data Engineer, Machine Learning Engineer oder Data Product Manager zu arbeiten.

Je nach gewähltem Schwerpunkt werden in den verschiedenen Modulen Datenbanken, Machine Learning, Data Visualization oder Business Intelligence behandelt.

Alle unsere Kurse werden vollständig im Fernunterricht über das Internet absolviert, und unsere Organisation ist für den Bildungsgutschein  zur Finanzierung zugelassen. Entdecke jetzt DataScientest!

DataScientest News

Melde Dich jetzt für unseren Newsletter an, um unsere Guides, Tutorials und die neuesten Entwicklungen im Bereich Data Science direkt per E-Mail zu erhalten.

Möchtest Du informiert bleiben?

Schreib uns Deine E-Mail-Adresse, damit wir Dir die neuesten Artikel zum Zeitpunkt der Veröffentlichung zusenden können!
icon newsletter

DataNews

Starte Deine Karriere im Bereich Data: Erhalte regelmäßig Insiderwissen und wertvolle Karrieretipps in Deinem Posteingang.