Frage

Zunächst einmal, ich möchte eine Flamme Krieg auf Sprachen zu vermeiden. Die Sprachen zur Auswahl sind Perl, Python und Ruby. Ich möchte erwähnen, dass ich mit allen von ihnen bequem bin, aber das Problem ist, dass ich nicht nur auf einen konzentrieren.

Wenn ich zum Beispiel einer kühle Perl-Modul zu sehen, habe ich, um es auszuprobieren. Wenn ich eine schöne Python App zu sehen, muss ich wissen, wie es gemacht. Wenn ich einen Ruby-DSL oder einen Ruby-Voodoo sehen, ich bin für eine Weile auf Ruby-süchtig.

Im Moment arbeite ich als Java-Entwickler, sondern plane CEH in naher Zukunft auf Aufnahme. Meine Frage ist: für Werkzeug Schreiben und ausbeuten Entwicklung, welche Sprache finden Sie die am besten geeignete sein

Auch ich will nicht, um eine Flamme Krieg oder irgendwelche Probleme verursachen, ich nur ehrliche Meinung von scripters wollen, die wissen, was sie tun.

Eine weitere Sache: vielleicht einige von euch fragen: „Warum auf einer Sprache zufrieden geben?“. Um dies zu beantworten. Ich möchte nur eine Sprache wählen, um zu versuchen, es zu meistern

War es hilfreich?

Lösung

Sie wollen wahrscheinlich Rubin, weil es die Muttersprache für Metasploit ist, die der De-facto-Standard-Framework Open-Source-Penetrationstests ist. Ruby wird dir geben:

  • Metasploit des Rahmen, Opcode und Shellcode Datenbanken
  • Metasploit Ruby-lorcon Bindungen für rohe 802,11 Arbeit.
  • Metasploit der KARMA-Bindings für 802.11 Clientside Umleitung.
  • Libcurl und net / http für Web-Tool Schreiben.
  • eventmachine für Web-Proxy und Fuzzing Arbeit (oder RFuzz, die den bekannten Mischlings Webserver erweitert) .
  • Metasm für Shellcode Generation.
  • Distorm für x86-Demontage.
  • BinData für binäres Dateiformat Fuzzing.

Der zweite Platz geht hier zu Python. Es gibt mehr Pentesting Bibliotheken in Python als in Ruby (aber nicht genug Metasploit zu kompensieren). Kommerzielle Tools sind in der Regel Python als auch unterstützen --- wenn Sie ein Immunity CANVAS oder CORE Auswirkungen Kunde sind, Sie Python wollen. Python gibt Ihnen:

  • Verdrehte für den Netzzugang.
  • PaiMei für die Programmverfolgung und programmierbare Fehlersuche.
  • CANVAS und Auswirkungen zu unterstützen.
  • Dornseif der firewire Bibliotheken für die Fern Debuggen.
  • Bereit Integration mit WinDbg für Remote-Windows-Kernel-Debugging (es gibt immer noch keine gute Antwort in Ruby für Kernel-Debugging, weshalb ich immer noch gelegentlich Python verwenden).
  • Peach Fuzzer und Sully für Fuzzing.
  • SpikeProxy für Web-Penetrationstests (auch OWASP Pantera ).

Es überrascht nicht, verwendet eine Menge von Web-Arbeit Java-Tools. Das De-facto-Standard-Web-Pentest Tool ist Burp Suite, die ein Java-Swing-App ist. Sowohl Ruby und Python haben Java-Varianten können Sie Zugriff auf Tools wie das bekommen verwenden. Auch beide Ruby und Python Angebot:

  • Die direkte Integration mit libpcap für Roh-Paket arbeiten.
  • OpenSSL Bindungen für Krypto.
  • IDA Pro-Erweiterungen.
  • Reif (oder zumindest sinnvoll) C Fremdfunktionsschnittstellen für API-Zugriff.
  • WxWindows für UI Arbeit und anständige Web-Stacks für Web-UIs.

Sie werden nicht mit entweder Sprache schief gehen, wenn auch für Mainstream Pentest Arbeit, wahrscheinlich Metasploit Kanten die Vorteile Python alle aus, und derzeit für x86 Umkehren Arbeit, Python Vorgesetzter Debug-Schnittstellen umranden die Vorteile Rubin alle aus.

Also: es ist 2008. Sie sind nicht „Skriptsprachen“. Sie sind Programmiersprachen. ;)

Andere Tipps

[Disclaimer: Ich bin in erster Linie ein Perl-Programmierer, die mein Urteil werden Färbung kann. Aber ich bin kein besonders Stamm, und ich denke, auf dieser besonderen Frage meines Argument recht objektiv ist.]

Perl wurde nahtlos in die Unix-Landschaft zu mischen, und deshalb fühlt es sich so fremd Menschen mit einem hauptsächlich-OO Hintergrund (insbesondere die Java Schule der OOP). Aus diesem Grund sind in der es aber, es ist unglaublich weit mit jeder Art von unixoide OS auf Computern installiert, und viele Anbieter Systemprogramme geschrieben. Auch aus dem gleichen Grund, Server, die weder Python noch Rubin installiert haben, sind immer noch wahrscheinlich Perl auf sie haben, wieder macht es wichtig, eine gewisse Vertrautheit zu haben, mit. Also, wenn Ihr CEH-Aktivität auf Unix umfangreiche Tätigkeit umfasst, werden Sie auf jeden Fall eine gewisse Menge an Vertrautheit mit Perl haben müssen, und man könnte auf ihm auch konzentrieren.

Das heißt, es weitgehend eine Frage der Präferenz. Es gibt nicht viel, um die Sprachen zu unterscheiden; ihre Ausdruckskraft ist nahezu identisch. Manche Dinge sind ein wenig leichter in einer der Sprachen, einige ein wenig einfacher in einem anderen.

Im Hinblick auf den Bibliotheken weiß ich nicht, wie Ruby und Python vergleichen, gegeneinander - ich weiß, dass Perl hat sie mit einem Vorsprung schlagen. Dann wieder, manchmal (vor allem, wenn Sie für Bibliotheken für gemeinsame Bedürfnisse suchen) der einzige Effekt davon ist, dass Sie mit Entscheidungen überschwemmt erhalten. Und wenn Sie nur suchen die Dinge in einem bestimmten Bereich zu tun, die auch durch Bibliotheken für Python oder Ruby, die Masse von andere bedeckt Sachen auf CPAN ist nicht unbedingt ein Vorteil. In Nischenbereichen, jedoch zählt es, und man kann nie wissen, was Sie unvorhergesehene müssen schließlich haben (err, per Definition).

Für Einzeiler Verwendung auf der Kommandozeile, Python ist ein bisschen eines nicht-Starter.

In Bezug auf der interaktiven Umgebung von Interpreter, Perl ... ähm ... na ja, können Sie den Debugger verwenden, die nicht so groß ist, oder Sie können eine von CPAN installieren, aber Perl hat Schiff nicht gut selbst.

Also ich denke, Perl hat einen sehr leichten Vorsprung für Ihre Bedürfnisse insbesondere, aber nur knapp. Wenn Sie Ruby-Pick werden Sie wahrscheinlich nicht viel schlechter überhaupt sein. Python könnten Sie ein wenig mehr spürbar Unannehmlichkeiten, aber es ist auch kaum ein schlecht Wahl.

Ich könnte ein Argument machen für alle drei: -)

Perl hat alle CPAN - Ihnen einen großen Vorteil gibt schnell in einem Strang ziehen Funktionalität. Es hat auch eine schöne flexible Test-Infrastruktur, die bedeutet, dass Sie viele verschiedene automatisierte Tests Stile (einschließlich Tests in anderen Sprachen) im gleichen Rahmen anschließen können.

Ruby ist eine schöne Sprache zu lernen - und einige der cruft in Perl 5. fehlt Wenn Sie Web-basierte Tests tun es hat auch die watir Bibliothek - die trez nützlich ist (siehe http://wtr.rubyforge.org/ )

Python - schöne Sprache und (obwohl es nicht auf meine persönliche Präferenz ist) einige Völker die Art und Weise ist es einfacher strukturiert finden in dem Griff zu bekommen mit

.

Jeder von ihnen (und vielen anderen) wäre eine große Sprache zu lernen.

Statt in der Sprache suchen - ich an Ihrer Arbeitsumgebung aussehen würde. Es ist immer einfacher, Dinge zu lernen, wenn Sie andere Leute haben um die ähnliche Sachen tun. Wenn Sie aktuelle dev / Test Folk bereits auf einem der oben fokussiert sind - ich würde dafür gehen. Wenn nicht, wählen Sie diejenige, die am besten anwendbar / nützlich, um Ihre aktuelle Arbeitsumgebung sein würde. Chat mit dem Rest Ihres Teams und sehen, was sie denken.

Das hängt von der Umsetzung, wenn es mich mit Java würde verteilt werden, da Sie wissen, dass, wegen seiner Portabilität. Wenn es nur für den internen Gebrauch ist oder wird in halb-kontrollierten Umgebungen verwendet werden, dann gehen Sie mit dem, was Sie sind die bequemste Pflege und je nachdem, welcher hat die beste langfristigen Aussichten.

Jetzt nur noch die Frage zu beantworten, ich mit Perl gehen würde, aber ich bin ein Linux-Kerl so dass ich ein bisschen in diesen vorgespannt sein kann.

Wenn Sie sich mit Metasploit für Pen-Tests planen und nutzen Entwicklung Ich würde Rubin empfehlen wie zuvor erwähnt ist Metasploit in Ruby geschrieben und jede ausbeuten / Modulentwicklung Sie wünschen können, werden tun Rubin benötigen.

Wenn Sie Immunity CANVAS für Pen-Tests dann aus den gleichen Gründen verwenden werden, würde ich Python empfehlen als CANVAS in Python geschrieben. Auch zuzuteilen von Fuzzing-Frameworks wie Pfirsich und Sulley sind in Python geschrieben.

Ich würde Perl nicht empfehlen, da man sehr wenig Tools / scripts / Frameworks Stift Test / Fuzzing / Exploits im Zusammenhang finden / ... in Perl.

Wie Sie Ihre Frage lautet: „Werkzeug Schreiben und ausbeuten Entwicklung“ Ich würde empfehlen, wenn Sie Ruby-Metasploit oder Python wählen, ob Sie CANVAS wählen.

Hoffnung, die hilft:)

als CEH Sprechen, lernt das CEH Material zuerst. Dadurch werden Sie auf eine Vielzahl von Werkzeugen belichten und Plattformen verwendet, um verschiedene Arten von Angriffen zu montieren. Sobald Sie Ihr Ziel gut verstehen, schauen Sie in die Fähigkeiten der Tools und Plattformen bereits zur Verfügung (die zuvor erwähnten Metasploit Framework ist sehr gründlich und robust). Wie kann sie verlängert werden, um Ihren Bedürfnissen gerecht zu werden? Sobald Sie das wissen, können Sie die Fähigkeiten der Sprachen vergleichen.

Ich würde auch empfehlen, einen Blick auf den Werkzeugen zur Verfügung, auf dem Backtrack Distro nehmen .

Sie alle sollen dafür ausreichen. Es sei denn, Sie einige Bibliothek benötigen, die nur in einer Sprache verfügbar ist, würde ich persönliche Präferenz lassen Sie mich führen.

Wenn Sie sich für eine Skriptsprache suchen, die gut mit Java spielen, könnten Sie bei Groovy suchen. Es verfügt über die Flexibilität und Leistungsfähigkeit von Perl (Verschlüsse, in Regexes gebaut, assoziative Arrays an jeder Ecke), aber Sie können Java-Code zugreifen, es damit Sie Zugriff auf eine große Anzahl von Bibliotheken, insbesondere auf den Rest des Systems Sie‘ re zu entwickeln.

Metasploit ist ein großer Rahmen für Penetrationstests. Es ist vor allem in Ruby geschrieben, wenn Sie also diese Sprache gut kennen, vielleicht können Sie dort einhaken. Um jedoch zu verwenden Metasploit, brauchen Sie überhaupt keine Sprache kennen zu lernen.

Wenn Sie in CEH interessiert sind, würde ich einen Blick auf Grey Hat Python . Es zeigt ein paar Sachen, die ziemlich interessant und verwandt ist.

Dass gesagt wird, soll jede Sprache in Ordnung sein.

Nun, welche Art von Exploits denken Sie? Wenn Sie etwas schreiben wollen, das niedrige Niveau Zeug braucht (ptrace, Raw Sockets, etc.), dann müssen Sie C. Aber beide Perl und Python lernen, können verwendet werden. Die eigentliche Frage ist, welche passt zu Ihrem Stil mehr?

Wie für den Werkzeugbau, hat Perl gute String-Verarbeitung Fähigkeiten, ist näher an dem System, hat eine gute Unterstützung, aber IMHO ist es sehr verwirrend. Ich ziehe es Python: es ist eine saubere, einfach zu bedienen, einfache Sprache mit guter Unterstützung (zweisprachige Übersetzungen / lib Referenz, 3rd-Party-Libs, etc.) zu lernen. Und es ist (streng IMHO) cool.

Ich bin mit tqbf. Ich habe mit Python und Ruby gearbeitet. Zur Zeit arbeite ich mit JRuby. Es hat die ganze Macht von Ruby mit Zugriff auf die Java-Bibliotheken so, wenn es etwas, das Sie unbedingt brauchen eine Low-Level-Sprache, die Sie so mit einem High-Level-Sprache können zu lösen, ist zu tun. Bisher habe ich nicht wirklich brauchte viel Java zu verwenden, wie Rubin die Fähigkeit hat zu tun hatte alles, was ich habe als eine API-Tester erforderlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top