6

まず第一に、私は言語に関する炎上戦争を避けたいと思っています。選択できる言語は、Perl、Python、Ruby です。私はそれらすべてに満足していると言いたいのですが、問題は、1つだけに集中できないことです.

たとえば、クールな Perl モジュールを見つけたら、試してみる必要があります。素敵な Python アプリを見つけたら、それがどのように作成されているかを知らなければなりません。Ruby DSL や Ruby ブードゥー教を目にすると、しばらくの間 Ruby に夢中になります。

現在、私は Java 開発者として働いていますが、近い将来 CEH を取得する予定です。私の質問は、ツールの作成とエクスプロイトの開発に、どの言語が最も適していると思いますか?

繰り返しますが、私は炎上戦争やトラブルを引き起こしたくはありません。自分が何をしているかを知っているスクリプト作成者からの率直な意見が欲しいだけです。

もう 1 つ、「なぜ 1 つの言語にこだわるのですか?」と尋ねる人もいるかもしれません。これに答えるには: 私はそれをマスターしようとするために、1 つの言語だけを選択したいと思います。

4

12 に答える 12

28

Ruby は、デファクト スタンダードのオープン ソース侵入テスト フレームワークである Metasploit のネイティブ言語であるため、おそらく Ruby が必要です。Ruby は以下を提供します。

2 位は Python です。Python には、Ruby よりも多くのペンテスト ライブラリがあります (ただし、Metasploit を相殺するには不十分です)。商用ツールも Python をサポートする傾向があります --- Immunity CANVAS または CORE Impact の顧客であれば、Python が必要です。Python は以下を提供します。

当然のことながら、多くの Web 作業で Java ツールが使用されています。事実上の標準的な Web 侵入テスト ツールは、Java スイング アプリである Burp Suite です。Ruby と Python の両方に、そのようなツールにアクセスするために使用できる Java バリアントがあります。また、Ruby と Python の両方が以下を提供します。

  • 生のパケット作業のための libpcap との直接統合。
  • 暗号用の OpenSSL バインディング。
  • IDA プロの拡張機能。
  • API アクセス用の成熟した (または少なくとも妥当な) C 外部関数インターフェイス。
  • UI 作業用の WxWindows、および Web UI 用のまともな Web スタック。

どちらの言語でも問題はありませんが、メインストリームのペンテスト作業では、Metasploit がおそらく Python のすべての利点を凌駕し、現在、x86 のリバース作業では、Python の優れたデバッグ インターフェイスが Ruby の利点をすべて凌駕しています。

また、2008 年です。「スクリプト言語」ではありません。それらはプログラミング言語です。;)

于 2008-09-17T00:11:01.187 に答える
8

[免責事項: 私は主に Perl プログラマーです。しかし、私は特に部族的ではないので、この特定の問題については、私の議論は合理的に客観的だと思います。]

Perl は Unix の風景にシームレスに溶け込むように設計されています。そのため、主に OO のバックグラウンドを持つ人々 (特に OOP の Java スクール) にとって、Perl は非常に異質に感じられます。ただし、そのため、あらゆる種類の Unixoid OS を搭載したマシンに信じられないほど広くインストールされており、多くのベンダー システム ユーティリティが記述されています。また、同じ理由で、Python も Ruby もインストールされていないサーバーには Perl がインストールされている可能性が高く、この場合もある程度慣れておくことが重要です。したがって、CEH アクティビティに Unix に関する広範なアクティビティが含まれる場合は、とにかく Perl にある程度精通している必要があり、Perl に集中することもできます。

とは言っても、それは主に好みの問題です。言語を区別することはあまりありません。彼らの表現力は実質的に同じです。ある言語では少し簡単なこともあれば、別の言語では少し簡単なこともあります。

ライブラリに関しては、Ruby と Python が互いにどのように比較されるかはわかりませんが、Perl がそれらに差をつけていることは知っています。繰り返しになりますが、場合によっては (特に、一般的なニーズに対応するライブラリを探している場合)、その唯一の影響は、選択肢が殺到することです。また、Python や Ruby のライブラリで十分にカバーされている特定の分野でのみ何かをしようとしている場合、CPAN にの多くのものがあることは必ずしも利点ではありません。ただし、ニッチな分野では重要であり、最終的にどのような予期せぬニーズが発生するかはわかりません (定義上、間違いです)。

コマンド ラインでワンライナーで使用する場合、Python は初心者向けではありません。

対話型インタプリタ環境に関しては、Perl … うーん… まあ、デバッガを使うこともできますが、これはそれほど素晴らしいものではありません。CPAN からインストールすることもできますが、Perl 自体は良いものを出荷していません。

したがって、Perl は特にあなたのニーズに対して非常にわずかな優位性を持っていると思いますが、それはほんのわずかです。Ruby を選択した場合、おそらくそれほど悪くはありません。Python の方が多少不便かもしれませんが、それも悪い選択ではありません。

于 2008-09-16T22:04:39.027 に答える
4

私は3つすべてについて議論することができました:-)

Perl にはすべての CPAN が備わっているため、機能をすばやくまとめることができるという大きな利点があります。また、同じフレームワークにさまざまな自動テスト スタイル (他の言語でのテストを含む) をプラグインできることを意味する、優れた柔軟なテスト インフラストラクチャも備えています。

Ruby は学習するのに最適な言語です - そして Perl 5 のいくつかの難点が欠けています. Web ベースのテストを行っている場合は、watir ライブラリもあります - これは非常に便利です ( http://wtr.rubyforge.org/を参照) 。

Python - 優れた言語であり (個人的な好みではありませんが)、構造化された方法を理解するのが簡単な方法を見つける人もいます。

それらのどれも (および他の多くの言語) は、学習するのに最適な言語です。

言語を見る代わりに、私はあなたの作業環境を見たいと思います。周りに似たようなことをやっている人がいれば、何かを学ぶのはいつでも簡単です。現在の開発/テスト担当者が既に上記のいずれかに集中している場合は、それを選択します。そうでない場合は、現在の作業環境に最も適している/役立つものを選択してください。チームの他のメンバーとチャットして、彼らの考えを確認してください。

于 2008-09-16T22:48:56.533 に答える
3

侵入テストとエクスプロイト開発に Metasploit を使用する予定がある場合は、前述のように Ruby をお勧めします。

Immunity CANVAS をペン テストに使用する場合は、同じ理由で Python をお勧めします。CANVAS は Python で記述されているためです。また、Peach や Sulley などのファジング フレームワークの多くは Python で記述されています。

Perl には侵入テスト/ファジング/エクスプロイト/... に関連するツール/スクリプト/フレームワークがほとんどないため、Perl はお勧めしません。

あなたの質問は「ツールの作成とエクスプロイトの開発」なので、Metasploit を選択する場合は Ruby を、CANVAS を選択する場合は python をお勧めします。

それが役立つことを願っています:)

于 2008-09-16T22:49:14.910 に答える
3

それは実装に依存します。配布される場合は、Java を使用します。ご存じのように、移植性があるためです。社内でのみ使用する場合、または半制御環境で使用する場合は、最も快適に維持でき、長期的な見通しが最も優れているものを使用してください。

質問に答えるだけなら、私は Perl を使いますが、私は Linux 派なので、これには少し偏見があるかもしれません。

于 2008-09-16T20:14:39.353 に答える
2

CEHと言えば、まずCEHの教材を学びましょう。これにより、さまざまな種類の攻撃を仕掛けるために使用されるさまざまなツールやプラットフォームにさらされます。ターゲットをよく理解したら、すでに利用可能なツールとプラットフォームの機能を調べます (前述の metasploit フレームワークは非常に完全で堅牢です)。ニーズを満たすためにどのように拡張できますか? それがわかれば、言語の機能を比較できます。

また、 BackTrackディストリビューションで利用できるツールを確認することをお勧めします。

于 2008-09-16T20:48:21.410 に答える
1

それらのすべてはそれのために十分であるはずです。1つの言語でしか利用できないライブラリが必要な場合を除いて、個人的な好みでガイドさせていただきます。

于 2008-09-16T20:19:25.737 に答える
1

Javaでうまく機能するスクリプト言語を探している場合は、Groovyを検討することをお勧めします。Perlの柔軟性とパワー(クロージャ、組み込みの正規表現、隅々にある連想配列)がありますが、そこからJavaコードにアクセスできるため、膨大な数のライブラリ、特にシステムの残りの部分にアクセスできます。再開発。

于 2008-09-16T20:20:05.843 に答える
1

metasploitは、侵入テストの優れたフレームワークです。主にRubyで書かれているので、その言語をよく知っていれば、そこに引っ掛けることができるかもしれません。ただし、me​​tasploit を使用するのに、言語の知識はまったく必要ありません。

于 2008-09-16T20:22:50.830 に答える
1

CEH に興味がある場合は、Gray Hat Pythonをご覧ください。それはかなり興味深く、関連するいくつかのものを示しています。

そうは言っても、どの言語でも問題ないはずです。

于 2010-07-11T20:58:06.647 に答える
0

さて、あなたはどのようなエクスプロイトを考えていますか?低レベルのもの(ptrace、rawソケットなど)を必要とするものを書きたい場合は、Cを学ぶ必要があります。ただし、PerlとPythonの両方を使用できます。本当の問題は、どちらがあなたのスタイルに合っているかということです。

ツール作成に関しては、Perlは優れた文字列処理能力を持ち、システムに近く、優れたサポートを備えていますが、私見では非常に混乱しています。私はPythonが好きです。Pythonはクリーンで使いやすく、優れたサポート(完全な言語/ライブラリリファレンス、サードパーティのライブラリなど)を備えた学習しやすい言語です。そして、それは(厳密に私見)かっこいいです。

于 2008-09-16T20:17:11.593 に答える
0

私はtqbfと一緒です。私はPythonとRubyを扱ってきました。現在、JRuby を使用しています。Java ライブラリにアクセスできる Ruby のすべての機能を備えているため、解決するために低水準言語がどうしても必要な場合は、高水準言語を使用して解決できます。Ruby には、私が API テスターとして必要とするすべての機能が備わっているため、これまでのところ Java をあまり使用する必要はありませんでした。

于 2011-02-07T22:24:32.513 に答える