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

StackOverflow https://stackoverflow.com/questions/76408

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

  • Метаплоитинг базы данных фреймворка, кода операции и шелл-кода
  • Метаплоитинг Руби лоркон привязки для raw 802.11 работают.
  • Привязки КАРМЫ Metasploit к перенаправлению на стороне клиента 802.11.
  • Libcurl и net / http для написания веб-инструментов.
  • EventMachine - событийная машина для работы с веб-прокси и фаззингом (или RFuzz, который расширяет хорошо известный веб-сервер Mongrel).
  • Метазм для генерации шелл-кода.
  • Искажать для дизассемблирования x86.
  • БинДата для фаззинга двоичного формата файлов.

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

  • Скрученный для доступа к сети.
  • ПайМэй для отслеживания программ и программируемой отладки.
  • ПОЛОТНО и ударная опора.
  • Дом Дорнсайфа библиотеки firewire для удаленной отладки.
  • Готовая интеграция с WinDbg для удаленной отладки ядра Windows (в Ruby по-прежнему нет хорошего ответа для отладки ядра, вот почему я все еще иногда использую Python).
  • Персиковый Пушок и Салли для растушевки.
  • SpikeProxy для тестирования на проникновение в Интернет (также, ОВАСП Пантера).

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

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

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

Также:сейчас 2008 год.Это не "скриптовые языки".Это языки программирования.;)

Другие советы

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

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

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

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

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

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

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

Я мог бы привести аргументы в пользу всех трех :-)

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

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

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

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

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

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

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

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

Если вы будете использовать Immunity CANVAS для тестирования пером, то по тем же причинам я бы рекомендовал Python, поскольку CANVAS написан на python.Также множество фреймворков для фаззинга, таких как Peach и Sulley, написаны на Python.

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

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

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

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

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

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

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

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

Если вас интересует CEH, я бы взглянул на Серая Шляпа из Питона.В нем показаны некоторые довольно интересные и взаимосвязанные вещи.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top