Какой из этих языков сценариев более подходит для проверки пера?

Прежде всего, я хочу избежать пламенной войны на языках. Языки на выбор – это Perl, Python и Ruby. Я хочу упомянуть, что мне комфортно со всеми, но проблема в том, что я не могу сосредоточиться только на одном.

Если, например, я вижу классный модуль Perl, я должен попробовать его. Если я вижу хорошее приложение Python, я должен знать, как это сделано. Если я вижу Ruby DSL или какой-то рудиновый вуду, я некоторое время натягиваю Ruby.

Сейчас я работаю разработчиком Java, но планирую принять CEH в ближайшем будущем. Мой вопрос: для написания инструмента и развития эксплойта, какой язык вы считаете наиболее подходящим?

Опять же, я не хочу вызывать пламенную войну или какие-либо неприятности, мне просто нужны честные мнения от сценаристов, которые знают, что они делают.

Еще одно: возможно, некоторые из вас спросят: «Зачем поселиться на одном языке?». Чтобы ответить на это: я хотел бы выбрать только один язык, чтобы попытаться овладеть им.

    Вы, вероятно, хотите Ruby, потому что это родной язык для Metasploit, который является стандартной базой для тестирования проникновения с открытым исходным кодом. Ruby собирается дать вам:

    • База данных Metasploit , операционных кодов и файлов shellcode
    • Взаимодействие Ruby lorcon от Metasploit для сырой работы 802.11.
    • Привязки KARMA от Metasploit для перенаправления клиентов 802.11.
    • Libcurl и net / http для написания веб-инструментов.
    • EventMachine для веб-прокси и fuzzing-работы (или RFuzz, который расширяет известный веб-сервер Mongrel).
    • Метазм для генерации шелка .
    • Разрушение для разборки x86.
    • BinData для двоичного формата файла.

    Второе место здесь занимает Python. В Python имеется больше доступных pentesting библиотек, чем в Ruby (но недостаточно для компенсации Metasploit). Коммерческие инструменты также поддерживают Python – если вы являетесь клиентом Immunity CANVAS или CORE Impact, вам нужен Python. Python дает вам:

    • Скрученный для доступа к сети.
    • PaiMei для отслеживания программ и программируемой отладки.
    • CANVAS и поддержка воздействия.
    • Драйвер- библиотеки Dornseif для удаленной отладки.
    • Готовая интеграция с WinDbg для удаленной отладки ядра Windows (до сих пор нет хорошего ответа в Ruby для отладки ядра, поэтому я все же иногда использую Python).
    • Персик Фуззер и Салли для размытия.
    • SpikeProxy для тестирования проникновения в сеть (также, OWASP Pantera ).

    Неудивительно, что многие веб-работы используют инструменты Java. Де-факто стандартный инструмент для веб-пентентов – Burp Suite, который является Java-качели. В Ruby и Python есть варианты Java, которые вы можете использовать для доступа к таким инструментам. Кроме того, как Ruby, так и Python предлагают:

    • Прямая интеграция с libpcap для работы с сырым пакетом.
    • Связывание OpenSSL для криптографии.
    • Расширения IDA Pro.
    • Зрелые (или, по крайней мере, разумные) C-интерфейсы для интерфейса API.
    • WxWindows для работы с пользовательским интерфейсом и приличные сетевые стеки для веб-интерфейсов.

    Вы не собираетесь ошибаться ни в одном из языков, хотя для основной работы pentest Metasploit, вероятно, устраняет все преимущества Python, и в настоящее время для работы с реверсированием x86 превосходные интерфейсы отладки Python ограничивают все преимущества Ruby.

    Также: это 2008. Они не «языки сценариев». Это языки программирования. 😉

    [Отказ: я в первую очередь программист на Perl, который может раскрасить мое мнение. Тем не менее, я не особенно родовой, и я думаю по этому конкретному вопросу мой аргумент достаточно объективен.]

    Perl был разработан так, чтобы легко вписаться в ландшафт Unix, и поэтому он чувствует себя настолько чуждым людям с фоном в основном OO (в частности, в школе Java OOP). По этой причине, однако, он невероятно широко установлен на машинах с любым видом операционной системы Unixoid, и в нем написано множество служебных программ поставщика. По той же причине серверы, на которых не установлены ни Python, ни Ruby, по-прежнему, вероятно, будут иметь Perl, что еще раз заставляет задуматься. Поэтому, если ваша деятельность CEH включает в себя обширную деятельность в Unix, вам все равно придется иметь некоторое знакомство с Perl, и вы также можете сосредоточиться на ней.

    Тем не менее, это в основном вопрос предпочтения. Существует не так много различий между языками; их выразительная сила практически идентична. Некоторые вещи немного легче на одном из языков, некоторые немного легче в другом.

    Что касается библиотек, я не знаю, как Ruby и Python сравниваются друг с другом – я знаю, что Perl их бил по разнице. Опять же, иногда (особенно, когда вы ищете библиотеки для общих нужд), единственным эффектом является то, что вы получаете заброшенные варианты. И если вы только хотите делать что-то в определенной области, которая хорошо покрывается библиотеками для Python или Ruby, масса других вещей на CPAN не обязательно является преимуществом. Тем не менее, в нишевых областях это важно, и вы никогда не знаете, какую непредвиденную потребность вы в конечном итоге имеете (ошибочно, по определению).

    Для однострочного использования в командной строке Python – это не стартер.

    Что касается среды интерактивного интерпретатора, Perl … uhm … ну, вы можете использовать отладчик, который не так уж хорош, или вы можете установить его из CPAN, но Perl не отправляет сам хороший.

    Поэтому я думаю, что у Perl есть очень небольшое преимущество для ваших нужд, в частности, но только просто. Если вы выберете Ruby, вы, вероятно, не будете намного хуже. Python может неудобно вас немного заметнее, но это тоже плохой выбор.

    Я могу сделать аргумент для всех трех 🙂

    Perl имеет все CPAN – дает вам огромное преимущество в быстром объединении функций. Он также обладает хорошей гибкой инфраструктурой тестирования, что означает, что вы можете подключать множество различных стилей тестирования (включая тесты на других языках) в той же структуре.

    Ruby – прекрасный язык для изучения – и не хватает некоторых из трещин в Perl 5. Если вы занимаетесь веб-тестированием, у него также есть библиотека watir – что полезно для trez (см. http://wtr.rubyforge.org/ )

    Python – хороший язык и (хотя это не относится к моим личным предпочтениям) некоторые люди находят способ, с помощью которого его структурирование легче справиться.

    Любой из них (и многие другие) будет отличным языком для изучения.

    Вместо того, чтобы смотреть на язык – я бы посмотрел на вашу рабочую среду. Всегда легче учиться, если у вас есть другие люди, которые делают подобные вещи. Если вы хотите, чтобы текущие разработчики / специалисты по тестированию уже были сосредоточены на одном из вышеперечисленных, я бы пошел на это. Если нет, выберите тот, который будет наиболее применимым / полезным для вашей текущей рабочей среды. Пообщайтесь с остальной частью своей команды и посмотрите, что они думают.

    Это зависит от реализации, если он будет распространен, я бы пошел с Java, видя, как вы знаете, из-за его переносимости. Если он используется только для внутреннего использования или будет использоваться в полуконтролируемых средах, то переходите к тому, что вам наиболее удобно поддерживать, и в зависимости от того, какой из них имеет лучший долгосрочный прогноз.

    Теперь, чтобы просто ответить на вопрос, я бы пошел с Perl, но я парень Linux, поэтому я могу быть немного предвзятым в этом.

    Если вы планируете использовать Metasploit для тестирования пера и разработки эксплойтов, я бы рекомендовал рубин, как упоминалось ранее. Metasploit написан на рубине, и любая разработка эксплойта / модуля, которую вы, возможно, захотите сделать, потребует рубина.

    Если вы будете использовать Immunity CANVAS для тестирования пера, то по тем же причинам я бы рекомендовал Python, поскольку CANVAS написан на python. Также выделяются пушистые рамки, такие как Персик и Сулли, написанные на Python.

    Я бы не рекомендовал Perl, поскольку вы найдете очень мало инструментов / скриптов / фреймворков, связанных с проверкой пера / fuzzing / exploits / … в Perl.

    Поскольку ваш вопрос – «написание инструментов и разработка эксплойтов», я бы порекомендовал Ruby, если вы выберете Metasploit или python, если вы выберете CANVAS.

    надеюсь, это поможет 🙂

    Говоря как CEH, сначала изучите материал CEH. Это предоставит вам различные инструменты и платформы, используемые для установки различных видов атак. После того, как вы хорошо поймете свою цель, изучите возможности уже имеющихся инструментов и платформ (ранее упомянутая инфраструктура metasploit очень тщательная и надежная). Как их можно расширить, чтобы удовлетворить ваши потребности? Как только вы это знаете, вы можете сравнить возможности языков.

    Я также рекомендовал бы взглянуть на инструменты, доступные в дистрибутиве BackTrack .

    Для этого все должно быть достаточно. Если вам не нужна библиотека, доступная только на одном языке, я бы посоветовал мне личную настройку.

    Если вы ищете язык сценариев, который будет хорошо работать с Java, вы можете посмотреть Groovy. Он обладает гибкостью и мощью Perl (замыкания, встроенные в регулярные выражения, ассоциативные массивы на каждом углу), но вы можете получить доступ к Java-коду из него, таким образом, у вас есть доступ к огромному числу библиотек и, в частности, к остальной системе, развиваться.

    metasploit – отличная основа для тестирования на проникновение. В основном это написано на Ruby, поэтому, если вы хорошо знаете этот язык, возможно, вы можете подключиться туда. Однако, чтобы использовать metasploit, вам вообще не нужно знать какой-либо язык.

    Если вас интересует CEH, я бы посмотрел на Gray Hat Python . Это показывает некоторые вещи, которые довольно интересны и связаны.

    При этом любой язык должен быть в порядке.

    Ну, какие подвиги вы думаете? Если вы хотите написать что-то, что требует материала низкого уровня (ptrace, raw сокеты и т. Д.), Тогда вам нужно будет изучить C. Но и Perl, и Python можно использовать. Реальный вопрос: какой из них больше подходит вашему стилю?

    Что касается инструментария, Perl обладает хорошими способностями к обработке строк, ближе к системе, имеет хорошую поддержку, но IMHO очень запутан. Я предпочитаю Python: это чистый, простой в использовании, простой в освоении язык с хорошей поддержкой (полная ссылка на язык / lib, сторонние библиотеки и т. Д.). И это (строго ИМХО) круто.

    Я с tqbf. Я работал с Python и Ruby. В настоящее время я работаю с JRuby. Он обладает всеми возможностями Ruby с доступом к библиотекам Java, поэтому, если вам нужно что-то, что вам нужно, язык низкого уровня, который вы можете решить, вы можете сделать это с помощью языка высокого уровня. До сих пор мне не нужно было много использовать Java, поскольку Ruby имел возможность делать все, что мне нужно, в качестве тестера API.

    Мое личное предпочтение для сценариев – Python. Я нахожу синтаксис (чувствительный к пробелу), чтобы сделать вещи более читаемыми. Я не большой поклонник синтаксиса Ruby.

    Ruby более функциональный программист, дружелюбный, с лучшей поддержкой этого стиля программирования.

    Python, как правило, быстрее, но это меняется.