it-swarm-eu.dev

Programmiersprache für Netzwerksicherheit

Ich arbeite jetzt als Tester. Ich plane, in den Bereich der Sicherheit wie CEH oder CISSP zu wechseln. Aber viele sagen, um ein großartiger Hacker zu sein, muss man mindestens eine Programmiersprache gut kennen. Ich kenne schon ein bisschen Java. Aber ich wollte nur wissen, welche Sprache näher an der Netzwerksicherheit und verwandten Domänen liegt. Welche Art von Sprache sollte ich also lernen, damit ich in den Bereich der Sicherheit wechseln kann?

14
Madusudanan

Es gibt keine definierte Blaupause für die am besten zu lernende Sprache. Aus diesem Grund möchte ich zwei gute Alternativen erwähnen, die meiner Meinung nach (und viele andere) eine gute Sprache für die Computersicherheit sind.

LUA

Erklärung von Lua aus wikipedia : Lua ist eine leichte Programmiersprache mit mehreren Paradigmen, die als Skriptsprache mit "erweiterbarer Semantik" als primärem Ziel entwickelt wurde.

Der Grund, warum ich erwähne, dass LUA eine gute Sprache zum Lernen ist, ist, dass es die Skript-Engine für VIELE beliebte Sicherheitstools ist. Dies ist allein ein sehr guter Grund, diese Sprache zu lernen. Einige der Sprachen sind:

  • NMAP (Network Mapping Tool)
  • Schnupfen (Open Source IDS)
  • Wireshark (Paketschnüffelwerkzeug)
  • Vim (Sehr beliebter Unix-Texteditor)
  • Cisco ASA (Firewall, IPS, VPN)
  • Netzwerkdiensttools (Apache, lightHttpd, FreePop)

Nebenbei bemerkt: Sogar Blizzards großer Hit World of Warcraft unterstützt LUA-Skripte im Spiel :) Für wen auch immer das relevant sein mag.

Python

Ich bin ein bisschen voreingenommen gegenüber Python nachdem ich angefangen habe das Buch zu lesen " Gray Hat Python: Python Programmierung für Hacker und Reverse Engineers ". Ich stimme vielen Punkten aus diesem Buch zu, warum es gut ist, diese Sprache für einen Hacker zu lernen (allgemein bekannt als Sicherheitsspezialist :)).

Zitiert von Amazon Python ist eine gute Sprache zum Lernen, weil:

es ist einfach, schnell zu schreiben, und es verfügt über Low-Level-Unterstützung und Bibliotheken, die Hacker glücklich machen.

Es ist auch sehr bequem, im laufenden Betrieb mit dem Interpreter in Ihrer Python Shell) interagieren zu können.

Bearbeiten: Grafische Ansicht von HackerNews-Umfragen zu bevorzugten/unbeliebten Programmiersprachen: python wins

Bearbeiten 2: Von Digininjas Umfrage :

Language    Number  Percentage
Python  245 81%
Bash Scripting  241 79%
Ruby    127 42%
C   123 40%
Windows Powershell  111 37%
Batch Scripting 108 36%
PHP 107 35%
C++ 66  22%
Java    65  21%
Perl    57  19%
Other   57  19%
VB  29  10%
C#  26  9%
Lua 23  8%
26
Chris Dale

Es gibt keine solche Verbindung zwischen Programmiersprachen und Sicherheit. Eine bessere Sichtweise könnte darin bestehen, gemeinsame Sprachen zu lernen (also Java wäre ein vernünftiger Ausgangspunkt) wie alle Sprachen Sicherheitsprobleme haben - Sie können sich auch Sicherheitsprobleme auf einer Vielzahl von Webanwendungen und Plattformen ansehen, anstatt etwas Esoterisches.

Das Verständnis von Netzwerkprotokollen ist eine gute Idee, und die Analyse des Datenverkehrs auf den Ebenen 1 bis 4 kann hilfreich sein. Dies ist jedoch weitgehend sprachunabhängig.

lesen Sie die anderen Fragen mit dem Tag Professional-Education gut durch, um eine umfassendere Anleitung zu erhalten.

9
Rory Alsop

Einige Teile der Netzwerksicherheit beinhalten das Herumspielen mit den kleinen Details von TCP/IP-Paketen, wenn diese gesendet und empfangen werden. Dazu müssen Sie in der Lage sein, Pakete auf niedriger Ebene abzufangen und auch handgefertigte Pakete zu senden (unter Linux wird dies beispielsweise als SOCK_RAWSocket bezeichnet ). Nicht alle Programmiersprachen bieten dafür eine verwendbare API. Manchmal sind Kenntnisse in C erforderlich, um diese Funktionen nutzen zu können.

Abgesehen davon ist jede vielseitige Programmiersprache, die keine Probleme beim Empfangen und Senden beliebiger Bytes hat, gut für Sie. Java ist in dieser Hinsicht in Ordnung.

9
Thomas Pornin

Hinweis: Mir wurde klar, dass dies sehr voreingenommen gegenüber Systemen und weg von der allgemeinen Sicherheit ist. Sicherheit ist ein Prozess und beinhaltet mehr als Technologie.

Es gibt zwei Routen, aus denen Sie auswählen können und die leider (IMHO) weder Java enthalten.

C ist eine sehr gute Systemsprache. Sie können mit Unix und Linux arbeiten und in der Nähe des Metalls graben - Systemaufrufe, Kernelspeicher, Low-Level-Netzwerke usw.

Die andere Route ist eine Skriptsprache, mit der Sie Tools und Programme auf einer höheren Ebene schnell zusammenkleben können. Die meisten Skriptsprachen wie Perl, Python und Ruby bieten Ihnen Zugriff auf Abstraktionen auf Socket-Ebene. Ich bin voreingenommen für Python, da Sie problemlos C-Module dafür schreiben können, wenn Sie Leistung oder geringe Leistung benötigen -level Zugang.

Um nun die Lüge in Ihrer Frage anzusprechen ... ein großartiger Hacker zu sein, geht über Programmiersprachen hinaus. Ein großartiger Hacker zu sein, ist eine Geisteshaltung. Es beinhaltet alles in Frage zu stellen und in der Lage zu sein, Probleme kreativ zu lösen. Wenn Sie dies tun können, lernen Sie die Sprachen, die Sie benötigen, weil Sie sich selbst an sie wenden.

7
Bradley Kreider

Sie können wirklich keine Sprachen lernen, um Sicherheit zu lernen. Die meisten Sicherheitsprobleme sind viel subtiler. Die einzige Ausnahme bilden SQL-Abfragen: Irgendwann müssen Sie den Unterschied zwischen dem Kombinieren von Zeichenfolgen und parametrisierten Abfragen wirklich verstehen. SQL-Abfragen werden jedoch in einer anderen Sprache erstellt, z. B. Java, PHP, Ruby usw.

Sie müssen jedoch Skriptsprachen verstehen. Sie müssen Ihre eigenen Tools schreiben und vorhandene Tools anpassen. Zu den guten Skriptsprachen gehören JavaScript, Perl, PHP und Ruby.

Sie haben bereits mit Java begonnen, daher schlage ich vor, dass Sie weiterhin Java lernen. Erfahren Sie, wie Sie Java auf dem Webserver zum Erstellen von Webanwendungen mit einem SQL-Backend verwenden. Erfahren Sie, wie Sie Java zum Erstellen einfacher Befehlszeilenprogramme verwenden.

Sobald Sie Erfahrung mit dem Schreiben von Code in einer beliebigen Sprache haben, beginnen Sie mit der Verzweigung in andere Sprachen. Ein guter nächster Schritt wäre JavaScript. JavaScript kann sowohl auf dem Server zum Erstellen von Webanwendungen als auch in der Befehlszeile verwendet werden. Am wichtigsten ist jedoch, dass Sie es im Browser verwenden. Es ist also die einzige Sprache, die Sie lernen müssen.

Java und JavaScript verwenden eine ähnliche Syntax wie C. Es ist eine gute Idee, sich mit dem Unterschied zu anderen C-ähnlichen Sprachen vertraut zu machen, nämlich C, C++, C # und PHP.

6

Ich stimme vielem zu, was oben gesagt wurde. Insbesondere möchte ich jedoch Rubys Bedeutung etwas hervorheben. In meinen Augen ist Ruby aus mehreren Gründen eine großartige "Hacker" -Sprache:

  1. (Subjektiv) Es ist eine schöne, clevere und ausdrucksstarke Sprache, die es ermöglicht, schnelle und schmutzige Lösungen für Probleme in kurzer Zeit zu finden.
  2. Metasploit ist in Ruby geschrieben
  3. Rubys Edelsteinbibliothek ist riesig und mächtig, was es wiederum relativ einfach macht, Probleme schnell zu lösen.
2

Ich empfehle nmap , socat, lft und curl, wenn Sie Unix-Befehle für die Netzwerksicherheit lernen. Es gibt oft wenig Grund, diese Räder neu zu erfinden.

OpenVAS unterstützt eine netzwerksicherheitsspezifische Skriptsprache namens NASL, obwohl sie ursprünglich aus dem Nessus-Tool stammt, in dem NASL auf CASL basiert (aus dem CyberCop-Scanner von Network Associates).

Viele HTTP/TLS-Fuzzers haben Unterstützung für Dinge wie Webdienste und andere leistungsstarke programmatische Steuerelemente hinzugefügt. Die coolen, die ich in letzter Zeit gesehen habe, sind Resty-Burp, Buby, WXF und Shrapnel.

Die Verwendung einer Paketerfassungs-App ist ebenfalls nützlich, sei es tcpdump, snort, Wireshark, Network Miner oder HTTP Scoop.

Viele halten Lua, Python und Ruby) für kurzfristige und vorübergehende Netzwerksicherheitsprojekte für wesentlich besser als alle anderen Sprachen, obwohl die von Metasploit, wXf und watir-webdriver beschriebenen DSLs dafür sorgen Ein interessanter Fall zur Unterstützung von Ruby MRI und JRuby gegenüber anderen. Umgekehrt bietet Lua viel Unterstützung für filterbasierte Technologien wie Wireshark, Mod-Security und Snort (PCRE ist auch sehr häufig in diesen Technologien gefunden).

Zusammenfassend lässt sich sagen, dass Sie, wenn Sie Code aus Netzwerksicherheitsprojekten ändern möchten, eher ein C-Programm verwenden, aber eine in Ruby, Python oder Lua geschriebene Bibliothek oder Framework-Erweiterung aufrufen. Wenn Sie sich auf das Senden von Datenverkehr konzentrieren (insbesondere HTTP oder Exploits), ist Ruby die beste Wahl - wenn Sie sich jedoch auf das Empfangen von Datenverkehr konzentrieren (insbesondere IDS oder Paketerfassung), ist Lua a Die beste Wahl. Für das allgemeine Lernen habe ich gesehen, dass dpkt in Python während einer Prototyping-Phase sehr schnell einige erstaunliche Dinge erledigt).

Weitere Informationen finden Sie im Buch Codierung für Penetrationstester .

2
atdre

Ich mache seit Jahren Systementwicklung, angefangen mit Basic und Cobol, dann dBase III +, VB6, Asp.Net mit Access und SQL Server. Ich bin auch ein CISSP.

Ich denke, er sollte die Sprache der Versammlung lernen. Obwohl es irrelevant klingt, gibt es ihm eine solide Grundlage für das Reverse Engineering und hilft ihm auch, die Grundlagen von C, C++ usw. zu verstehen. Wenn der Quellcode nicht verfügbar ist, haben Sie nach dem Reverse Engineering Assembly.

0
Djesu