Frage:
Programmiersprache für Netzwerksicherheit
Madusudanan
2012-02-14 17:17:52 UTC
view on stackexchange narkive permalink

Ich arbeite jetzt als Tester. Ich plane, in den Bereich der Sicherheit wie CEH oder CISSP zu wechseln. Aber viele sagen, dass man mindestens eine Programmiersprache gut kennen muss, um ein großartiger Hacker zu sein. 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 Sicherheit wechseln kann?

Was Ihre Absicht betrifft, eine CISSP oder CEH zu verfolgen ... Ich halte beide und kann meinen Weg aus einer Papiertüte nicht codieren. CISSP ist größtenteils konzeptionelles Wissen, und die CEH ist sehr werkzeugorientiert. Befolgen Sie die Umrisse in den Domänen von beiden. FWIW ... die CEH schien mir viel einfacher als die CISSP.
Neun antworten:
Chris Dale
2012-02-15 12:46:44 UTC
view on stackexchange narkive permalink

Es gibt keine definierte Blaupause für die am besten zu lernende Sprache. Daher möchte ich zwei gute Alternativen erwähnen, die ich (und viele andere) für eine gute Sprache zum Erlernen der Computersicherheit halte.

LUA

Erläuterung von Lua aus wikipedia: Lua ist eine leichtgewichtige Multi-Paradigma-Programmiersprache, die als Skriptsprache mit "erweiterbarer Semantik" als Hauptziel entwickelt wurde.

Der Grund, warum ich LUA erwähne, ist a Eine gute Sprache zu lernen ist, dass es die Scripting-Engine für viele beliebte Sicherheitstools ist. Dies ist allein ein sehr guter Grund, diese Sprache zu lernen. Einige der Sprachen umfassen:

  • NMAP (Netzwerkzuordnungstool)
  • Snort (Open Source IDS)
  • Wireshark (Paket-Sniffing-Tool)
  • 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 " 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 aus Amazon Python ist eine gute Sprache zum Lernen, weil:

    es einfach ist, schnell zu schreiben, und es bietet Unterstützung und Bibliotheken auf niedriger Ebene, die Hacker glücklich machen.

    Es ist auch sehr komfortabel, 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: Aus Digininjas-Umfrage:

      Sprachnummer ProzentPython 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% Andere 57 19% VB 29 10% C # 26 9% Lua 23 8%  
    Ich glaube, eine Variante von Python (stapelloses Python) unterstützt die Benutzeroberfläche eines Spiels namens "Eve Online". Sie haben auch die Benutzeroberfläche erheblich verbessert, ich erinnere mich nur an stapellose Python, als ich gespielt habe.
    Ich bin damit einverstanden, dass Python eine sehr einfach zu erlernende Sprache ist. Ich denke, er wird das Wissen, das er braucht, aus dieser Sprache bekommen. Auch ich liebe den Pols-Mann :)) Ich würde dich nur dafür zweimal positiv bewerten.
    Ich vermute, Ruby ist aufgrund von Frameworks wie Metasploit so hoch
    Rory Alsop
    2012-02-14 17:30:18 UTC
    view on stackexchange narkive permalink

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

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

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

    Thomas Pornin
    2012-02-14 18:03:05 UTC
    view on stackexchange narkive permalink

    Einige Teile der Netzwerksicherheit umfassen das Fummeln mit den kleinen Details von TCP / IP-Paketen beim Senden und Empfangen. 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 Verwendung eines SOCK_RAW -Sockets bezeichnet a>). 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.

    Bradley Kreider
    2012-02-15 05:18:46 UTC
    view on stackexchange narkive permalink

    Hinweis: Ich habe festgestellt, dass dies sehr voreingenommen gegenüber Systemen und nicht gegenüber generischer Sicherheit ist. Sicherheit ist ein Prozess und beinhaltet mehr als Technologie.

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

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

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

    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.

    Robert David Graham
    2012-02-15 11:26:18 UTC
    view on stackexchange narkive permalink

    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 die 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 empfehle ich Ihnen, Java weiter zu lernen. Erfahren Sie, wie Sie Java auf dem Webserver zum Erstellen von Webanwendungen mit einem SQL-Backend verwenden. Erfahren Sie, wie Sie mit Java einfache Befehlszeilenprogramme erstellen.

    Wenn 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, sodass es die einzige Sprache ist, die Sie lernen müssen.

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

    Chris Allen Lane
    2012-03-27 01:09:46 UTC
    view on stackexchange narkive permalink

    Ich stimme vielen der oben genannten Aussagen zu. 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, schnell und schnell zu hacken -dirty Lösungen für Probleme in kurzer Zeit.
    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.
    4. ol>
    atdre
    2012-03-27 07:14:12 UTC
    view on stackexchange narkive permalink

    Ich empfehle dringend 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 netzwerkssicherheitsspezifische 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 programmgesteuerte 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 vorläufige Netzwerksicherheitsprojekte für wesentlich besser als alle anderen Sprachen, obwohl die von Metasploit, wXf und watir-webdriver beschriebenen DSLs Machen Sie einen interessanten Fall, um Ruby MRI und JRuby gegenüber anderen zu unterstützen. Umgekehrt bietet Lua viel Unterstützung für filterbasierte Technologien wie Wireshark, Mod-Security und Snort (PCRE ist auch in diesen Technologien sehr häufig zu finden).

    Zusammenfassend, wenn Sie gehen Um Code aus Netzwerksicherheitsprojekten zu ändern, werden Sie eher an ein C-Programm weitergeleitet, rufen jedoch eine in Ruby, Python oder Lua geschriebene Bibliothek oder Framework-Erweiterung auf. Wenn Sie sich auf das Senden von Datenverkehr (insbesondere HTTP oder Exploits) konzentrieren, ist Ruby die beste Wahl. Wenn Sie sich jedoch auf das Empfangen von Datenverkehr konzentrieren (insbesondere IDS oder Paketerfassung), ist Lua die beste Wahl. Ich habe 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 Material.

    Djesu
    2015-02-10 18:14:21 UTC
    view on stackexchange narkive permalink

    Ich habe jahrelang Systementwicklung durchgeführt, 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 Assemblersprache 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 die Assembly.

    MeMa
    2016-01-27 09:18:12 UTC
    view on stackexchange narkive permalink

    Im Gegensatz zu einer der Antworten ist Visual Basic 6.0 aus Sicherheitsgründen nur eine der bevorzugten Sprachen. Vor zwei Tagen habe ich einen professionellen Netzwerkscanner auf Facebook gesehen (komodolabs.com/network-scanner-news/). Malwarebytes und viele Antivirenprogramme sind eine Mischung aus Visual Basic 6.0 und der Assemblersprache. Daher ist Visual Basic 6.0 (aber nicht VB. NET) ein Favorit.

    Visual Basic 6.0: Ein Riese mächtiger als je zuvor

    enter image description here

    Wollen Sie damit sagen, dass komodolabs VB6 verwendet? Ich sehe keinen Hinweis darauf im Artikel. In Ihrem Artikel "Ein Riese, der mächtiger ist als je zuvor" wird "Planet Source Code" als Quelle verwendet, aber ich bin mir nicht sicher, ob er maßgeblich ist. Ich bin mir nicht sicher, ob Sie behaupten können, dass VB6 ein "Favorit" ohne unterschiedliche Daten ist.


    Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
    Loading...