Андрей Смирнов
Время чтения: ~23 мин.
Просмотров: 1

Firefox-убийца: Собираем хакерскую сборку плагинов для Mozilla

greasemonkey-dlya-firefox.png

На текущий момент времени практически каждый активный пользователь браузера устанавливает какое-либо расширение, добавляющее в веб-обозреватель новые опции, которые изначально в нем отсутствуют. Однако не все подобные дополнения публикуются в официальных магазинах, а другие же попросту являются небольшими скриптами. Их куда проще реализовать через специальные менеджеры управления. Один из таких инструментов называется Greasemonkey, и сегодня мы хотим рассказать о нем более детально, взяв за пример браузер Mozilla Firefox.

Используем расширение Greasemonkey в Mozilla Firefox

Суть Greasemonkey заключается в установке или создании пользовательских скриптов, которые будут работать на определенных сайтах. Это расширение выступает в роли специального механизма, обеспечивающего выполнение заранее заготовленного кода. Далее мы хотим в пошаговом руководстве рассказать все о взаимодействии с данным дополнением, начав с его установки и заканчивая созданием пользовательских скриптов.

Шаг 1: Установка расширения

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

  1. Откройте главное меню браузера, где перейдите в раздел «Дополнения». Это же действие можно выполнить нажатием на горячую клавишу Ctrl + Shift + A.

perehod-v-razdel-s-dopolneniyami-dlya-ustanovki-rasshireniya-greasemonkey-v-mozilla-firefox.png

На появившейся вкладке вас интересует поле ввода, где напишите «greasemonkey» и нажмите на Enter.</li>

poisk-rasshireniya-greasemonkey-v-mozilla-firefox-cherez-oficzialnyj-magazin.png

Произойдет автоматический переход на страницу Firefox Add-ons. Здесь нажмите на подходящий результат поиска, который отобразится первым в списке.</li>

perehod-na-straniczu-rasshireniya-greasemonkey-v-mozilla-firefox-dlya-dalnejshej-ustanovki.png

Кликните по синей кнопке с надписью «Добавить в Firefox».</li>

knopka-dlya-ustanovki-rasshireniya-greasemonkey-v-mozilla-firefox-na-oficzialnoj-stranicze.png

Ознакомьтесь с необходимыми для Greasemonkey разрешениями, после чего подтвердите свое намерение инсталляции.</li>

podtverzhdenie-dobavleniya-rasshireniya-greasemonkey-v-mozilla-firefox.png

Вы будете уведомлены об успешном завершении добавления. Если вы заинтересованы в том, чтобы скрипты работали и в фоновом режиме, обязательно отметьте галочкой пункт «Разрешить этому расширению работать в приватных окнах». Если вы случайно закрыли уведомление, не успев внести правку, ниже мы покажем, как настроить этот параметр иначе.</li>

uvedomlenie-ob-uspeshnoj-ustanovke-rasshireniya-greasemonkey-v-mozilla-firefox.png

</ol>

По завершении инсталляции дополнение сразу же активировано и готово к установке скриптов. Сейчас оно не выполняет никаких функций в браузере, поскольку еще не было добавлено пользовательских кодов, о чем мы и поговорим далее.

Шаг 2: Установка пользовательских скриптов

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

Перейти на официальный сайт Greasy Fork

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

perehod-na-straniczu-skachivaniya-skripta-dlya-greasemonkey-v-mozilla-firefox.png

Здесь нажмите по кнопке «Установить этот скрипт».</li>

nazhatie-na-knopku-dlya-skachivaniya-skripta-dlya-greasemonkey-v-mozilla-firefox.png

Выберите дополнительные опцию установки в отключенном состоянии и автоматическое открытие редактора после инсталляции, если это требуется. После щелкните по зеленой кнопке «Install».</li>

podtverzhdenie-installyaczii-skripta-dlya-greasemonkey-v-mozilla-firefox.png

Теперь откройте Greasemonkey, кликнув по значку на верхней панели. Здесь вы увидите список добавленных скриптов. Он будет обновлен сразу же после нажатия на «Install».</li>

otobrazhenie-ustanovlennyh-skriptov-dlya-rasshireniya-greasemonkey-v-mozilla-firefox.png

</ol>

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

Шаг 3: Настройка Greasemonkey

Иногда пользователю требуется выполнить настройку расширения, задав определенные параметры. Функциональность Greasemonkey построена так, что здесь просто нет массы опций, которые доступны для изменения, поскольку это даже не требуется. В основном меню следует обратить внимание на такие пункты:

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

aktivacziya-ili-otklyuchenie-raboty-rasshireniya-greasemonkey-v-mozilla-firefox.png

Далее посмотрите на блок, который выделен на скриншоте ниже. Здесь можно перейти в редактор, экспортировать или импортировать настройки, куда будут включены все установленные скрипты.</li>

sozdanie-novyh-skriptov-i-upravlenie-rezervnymi-kopiyami-greasemonkey-v-mozilla-firefox.png

В последнем блоке находятся полезные ссылки, которые могут пригодиться во время взаимодействия с Greasemonkey.</li>

ssylki-na-oficzialnye-istochniki-greasemonkey-v-mozilla-firefox.png

В конце давайте быстро рассмотрим, как сделать так, чтобы скрипты Greasemonkey работали и в приватных окнах, если этот параметр не был установлен заранее. Для этого откройте меню веб-обозревателя и перейдите в раздел «Дополнения».</li>

perehod-v-razdel-s-dopolneniyami-dlya-upravleniya-rasshireniem-greasemonkey-v-mozilla-firefox.png

Здесь отыщите Greasemonkey и нажмите на плитку расширения.</li>Опуститесь вниз по вкладке, где в разделе «Запуск в приватных окнах» установите маркер возле пункта «Разрешить».</li>Специальный значок приватности возле дополнения свидетельствует о том, что оно будет функционировать в этом режиме.</li></ol>

Это были все полезные кнопки и пункты меню. Последний блок, о котором мы не рассказали только что, отведен специально под скрипты. Этой теме будет посвящен отдельный абзац далее.

Шаг 4: Управление установленными скриптами

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

  1. Откройте окно управления расширением. Здесь вы увидите разделение скриптов. Некоторые из них используются на текущем сайте, а другие пока неактивны. Нажмите левой кнопкой мыши на необходимый, чтобы перейти к управлению.
  2. Здесь вы можете, например, включить скрипт, отредактировать его или удалить. Все это осуществляется путем нажатия на соответствующие кнопки. Ниже отображается информация о версии приложения и его последнем обновлении.
  3. Перейдите в «User Script Options», чтобы настроить дополнительные параметры скрипта. Это необходимо в крайне редких случаях, о чем обычно пишут на сайте, где распространяется код.
  4. Если необходимо внести правки, используйте опцию «Edit».
  5. Откроется отдельное окно редактора, где присутствует все содержимое, отвечающее за работу скрипта. Выполняя какие-то изменения, не забудьте сохранять их пред закрытием окна.

Не стоит вносить какие-то правки просто так, поскольку из-за этого может нарушиться работоспособность всего скрипта и его придется переустанавливать.

Шаг 5: Создание собственных скриптов

К теме создания собственных скриптов относится и копирование чужого кода, поскольку реализуется это точно таким же образом. Сейчас мы не будем давать каких-то рекомендаций по поводу написания приложения, поскольку этим занимаются люди, изучающие языки программирования. Что касается документации Greasemonkey, то она доступна для прочтения на официальном сайте. Сейчас мы лишь хотим продемонстрировать, как открыть редактор и вставить туда код.

  1. Перейдите к главному меню расширения, где нажмите на кнопку «New user script».
  2. Откроется окно редактора, где уже набирается код.
  3. Вставьте туда содержимое и сохраните изменения. Опционально можно поменять название скрипта, чтобы его было проще потом найти.
  4. Теперь в главном меню Greasemonkey вы увидите, что пользовательский скрипт был успешно добавлен.

Как видите, Greasemonkey — очень удобное и полезное расширение, позволяющее реализовать всяческие пользовательские скрипты в Mozilla Firefox. Именно благодаря этому сейчас энтузиасты создают множество полезных решений, упрощающих взаимодействие с браузером. Мы рады, что смогли помочь Вам в решении проблемы.Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Помогла ли вам эта статья?

За последние пару недель мне пришлось плотно поработать с системой управления пользовательскими скриптами для продуктов Mozilla — GreaseMonkey. И раз уж я сам себя назначил администратором одноименного блога, значит написать введение в вопрос — моя святая обязанность.

Введение

GreaseMonkey (далее GM) — система управления пользовательскими скриптами для продуктов Mozilla. В моей статье я буду говорить о браузере этой компании, о Firefox далее (FF). Так же в некоторых местах я коснусь его конкурентов, а именно Opera, Safari и конечно-же Internet Explorer (далее IE).Пользовательский скрипт (User Script) — скрипт, написанный на языке JavaScript (далее JS), устанавливаемый пользователем в браузер и исполняющийся при загрузке веб-страниц. Используется для изменения их дизайна (в широком смысле этого слова). Говоря проще, с помощью пользовательских скриптов, можно добавить/удалить/изменить элементы веб-страницы, изменить их поведение, улучшить User Experience.

Установка

GM легко ставится как расширение для FF с сайта дополнений. Так-же у GM есть официальный сайт, где можно найти массу полезной информации. После установки и перезапуска у FF появится иконка: И это значит что можно устанавливать пользовательские скрипты. Самый большой склад пользовательских скриптов — это userscripts.org. Установка проиходит очень просто. GreaseMonkey просто перехватывает ответ на запрос JS-файла, и если он имеет специальный заголовок (расскажу о нем ниже), то вызывает диалог установки:

Обзор

Управлять GM и установленными скриптами можно через контекстное меню, которое вызывается правом щелчком по рожице обезьяны: В верхней части меню отображается спискок активных для данной страницы скриптов. Любой скрипт можно отключить, убрав галочку. С помощью API GM вы можете расширить это меню. Все действия, зарегистрированные через GM_registerMenuCommand, появятся в подменю «Команды скрипта». Пункт меню «Новый скрипт» я пропущу, так как уверен, что в редакторе делать скрипт удобнее, в том числе и редактировать метаниформацию. В любом случае, я надеюсь, что освоение этого мастера не вызовет у читателей проблем. «Управление скриптами» вызвывает следующее окно: В этом окне вы можете сами поднастроить любой установленный пользовательский скрипт. Для этого выберите его в левом списке. Можно добавить удалить маски URL, для которых этот скрипт будет загружаться или НЕ загружаться (классический Allow/Deny), включить/выключить/удалить скрипт и, что самое важное для разработчика, отредактировать его вживую. Для редактирования скрипта надо нажать кнопку «Изменить». В первый раз GM попросит выбрать редактор. В последующие будет автоматически открывать рабочую копию скрипта в выбранном редакторе. На этом обзорная экскурсия по GM считается законченной и можно переходить непосредственно к тонкостям разработки пользовательских скриптов.

Пользовательские скрипты

GM-скрипты практически ничем (о некоторых особенностях, я расскажу в следующем разделе) не отличаются от обычных JS-скриптов, поэтому никаких специальных знаний для написания не нужно. Но для того чтобы GM могла распознать скрипт как пользовательский нужно добавить специальный заголовок:// ==UserScript== // @name Weborama Inline Player // @namespace tbms.ru/weborama/inline // @description Includes weborama inline player // @author Konstantin Shvydky, Nick Mitin // @include * // @exclude file://* // ==/UserScript== /* This code is licenced under the GPL www.fsf.org/licensing/licenses/gpl.html */ С name, author, description все понятно, надо остановиться на остальных параметрах — любая URI (это не ссылка, а аналог HTML namespace). Можно считать этот параметр уникальным идентификатором скрипта. — маска для страниц, которые будут активировать данный скрипт. Может быть несколько директив. @exclude — маска для страниц, которые НЕ будут активировать данный скрипт. Может быть несколько директив. Также хорошим тоном будет указать лицензию, под которой распространяется сам скрипт. Это можно сделать ниже метаданных. * О метаданных на greasespot.net. Вторым обязательным условием является окончание названия файла. Оно должно заканчиваться на «.user.js», иначе GM не будет распознавать скрипт. Запуск скрипта для GM производится в порядке очередности по наступлению события DOMContentLoaded у обрабатываемой веб-страницы. Имейте это ввиду.

Tips & Tricks

Мы уже выяснили, что пользовательские скрипты обычно меняют дизайн веб-страниц. Поэтому основные задачи, которые встают перед разработчиками связаны с DOM-программированием, а именно манипуляциями с DOM-моделью веб-страниц. Проблема здесь в том, что порой очень сложно добиться адекватной работы скрипта на антисемантических сайтах. И я бы хотел дать несколько наводок для GM-разработчиков. В Опере, Сафари и Файерфоксе есть встроенная поддержка XPath, через функцию document.evaluate(). Хорошее описание этой функции есть в MDC. Тем кто не в курсе, XPath (XML Path Language) является языком для обращения к частям XML-документа. В случае веба это определение верно и для HTML. Отличный туториал есть на ZVON.org. Суть метода в том, что вы создаете и посылаете «запрос» в DOM-модель, а в ответ вам приходит итератор со всеми нодами, которые удовлетворяют этому запросу. Важно знать, что нельзя напрямую изменять эти ноды в итераторе, так как любое изменение перестраивает DOM, таким образом делая итератор невалидным. Поэтому сначала создайте массив и скопируйте туда ссылки на эти ноды, а потом уже работайте с ними. В примере в MDC все это рассмотрено. В IE тоже есть частичная поддержка evaluate, которая реализуется черех хак, созданный Dimitri Glazkov и Mehdi Hassan. Мы внесли его в свой JS-Extender, поправив в нем некоторые баги. Тем не менее, у нас не получилось выполнять сложные XPath запросы, поэтому мы не пользуемся этой функцией в IE. Еще один важный момент, который стоит отметить, это то что при использовании свойства element.childNodes, FF считает текстовыми нодами переносы строки между тегами. Например у div с id = container будет не три, а пять дочерних нод:content1content2 Будьте бдительны! И последнее, но самое важное. В JS есть объект window, который как-бы является глобальным неймспесом для всех глобальных сущностей JS. если мы пишем var myVar = 1; то она будет доступна через window.myVar или window[‘myVar’]. Так вот, в GM тоже есть window, но он является оболочкой вокруг самого window веб-страницы. это сделано для того, чтобы ваш код не пересекался с оригинальным кодом страницы и не мешал ему. Но существуют ситуации, когда нужно напрямую обратиться к тому самому window, чтобы, например, получить значение переменной сайта. На помощь приходит глобальное свойство unsafeWindow, которое и предоставляет к нему доступ. Если вы пишете кросс-браузерный пользовательский скрипт, то имейте ввиду, что unsafeWindow есть только в GM, в Опере его нет. Поэтому лучше сразу завести глобальную переменную и положить в нее нужный вам window, например так: var aWindow = (typeof unsafeWindow != ‘undefined’)? unsafeWindow: window;

Ложка дегтя

Несмотря на большие возможности у GM есть существенный недостаток, который заключается в отсутсвии централизованного механизма обновления пользовательских скриптов. Существует несколько попыток решить эту проблему:yoast.com/greasemonkey-auto-update-notificationsplintor.wordpress.com/2007/05/01/greasemonkey-wish-auto-update-user-scriptsuserscripts.org/scripts/show/2296 На данный момент меня не устраивает ни один из них. Поэму мы взяли этот вопрос в разработку, и непременно придумаем элегантное решение проблемы. О чем я сообщу вам отдельно. В общем можно сказать, что GreaseMonkey — это частный случай механизма управления пользовательскими скриптами. В Опере они поддерживаются без всяких расширений, по информации, поступисшей от сушествует плагин для Safari, который позволяет запускать эти скрипты — GreaseKit, по информации поступившей от jursovet уже реализована поддержка скриптов и для Chrome На этом считаю свой доклад законченным. Спасибо, что дочитали.

Как ни крути, основная прелесть Firefox’а заключается в расширяемости. Плагины можно найти на любой случай жизни: чтобы блокировать рекламу, эффективно отлаживать веб-приложения, быстро переключать прокси и что угодно еще.  Особенно приятно, что за годы разработки появилась целая подборка особенных аддонов – тех, которые могут сослужить хорошую службу пентестеру.

Да, в описании плагина никогда не будет написано: «Это аддон для того, чтобы ломать сайты». Зато плагинами можно заменить массу отдельных x-toolz и выполнять многие действия прямо в браузере. Для того, чтобы отследить и подделать HTTP-заголовки, поиграться с кукисами, проспуфить User-Agent, сделать fingerprinting сорцов страницы, чтобы понять с каким движком на сервере имеешь дело, достаточно установить плагин. Надо только знать какой.

Fingerprinting’а в Firefox’е

Любой пентест страницы начинается с анализа: с чем, собственно, имеешь дело. Самописный, криво написанный движок для сайта, который можно оформить как учебник «Ошибки программиста» – настоящий подарок для хакера. Хотя и готовые движки CMS/форумов/блогов, которые все активно используют, но редко когда вовремя обновляют, предоставляют огромный простор для деятельности. А если знать, с каким решением имеешь дело, то можно быстро попробовать найти сплойт или запись в багтраке. Распознать тот или иной движок можно по ряду характерных признаков. Например, тег явно говорит о том, что сайт крутится на WordPress’е. Причем ковырять сорцы  самому в поисках характерных меток необязательно, потому как это самостоятельно может сделать плагин Wappalyzer. В случае, если движок, на котором крутится сайт, успешно распознается, его логотип отображается в адресной строке браузера. Это очень удобно. Уже сейчас в базе Wappalyzer есть данные по всем самым популярным скриптам для создания порталов, блогов, форумов, хостинг-панелей, электронных магазинов. Не менее успешно можно определять используемый JS-фреймворк и аналитические средства (вроде Google Analytics). На официальном сайте плагина даже можно посмотреть статистику по популярности каждого из решений, собранного как раз с помощью плагина. Другой аддон – ShowIP – никак не поможет узнать больше о самой страничке, но зато покажет IP-адрес серверов, на которых она крутится, и позволит быстро пробить адрес по различным whois-сервисам.

Манипуляция с HTTP-данными

Когда первое представление о том, с чем имеешь дело, есть, можно приступать к более активным действиям. Чтобы проанализировать HTTP/HTTPS-трафик между браузером и веб-сервером, часто используются специализированные тулзы вроде Fiddler’а. Но посмотреть, что передается серверу, и что от него возвращается обратно, вполне реально без посторонних программ. Достаточно лишь установить плагин HttpFox или Live HTTP Headers. Обе в очень удобной форме позволяют мониторить и анализировать весь входящий и исходящий HTTP-трафик, в том числе хедеры запросов и ответов, кукисы, содержание POST-запросов и т.д. Понятно, что одним только снифингом не обойтись – часто необходимо «на лету» изменять параметры запроса или хедеров и изучать реакцию приложения. Нет проблем: Modify Headers позволит добавлять, изменять и, что важно, фильтровать различные хедеры в запросах. Ты можешь изменить значение User Agent и, например, проспуфить HTTP-запрос так, как будто он выполняется с мобильного устройства. Впрочем, если часто приходится подделывать именно информацию об используемом браузере, но лучше задействовать специализированный аддон – User Agent Switcher, позволяющий сделать это за несколько кликов мышью.

Tamper Data – это еще более продвинутое средство, которое на особом счету в копилке любого пентестера. Помимо спуфинга собственно заголовков оно позволяет изменять данные, передаваемые в POST-запросах. Напомню, что если форма для отправки использует метод GET, то передаваемые данные оформляются в виде ключей в URL, и «играться» с ними можно прямо в адресной строке браузера. В случае с методом POST данные формы оформляются в особо созданной структуре, и здесь без специальной утилиты, позволяющей с ними манипулировать, не обойтись. Сложно даже представить, сколько раз Tamper Data появлялся в наших VisualHack’ах. Но каким бы удобным ни был аддон, он не позволяет выполнять автоматические аттаки. Например, его никак нельзя использовать для брутфорса формы авторизации. Ну и ладно, для брутфорса GET- и POST-форм есть отдельный плагин – Fireforce. Понятно, что подбор паролей является главной задачей подобного плагина, и, что приятно, он позволяет как генерировать случайные пароли с учетом заданных параметров, так и использовать для атаки словари. Мало брутфорса, хочешь устроить жесткий фаззинг во всех местах ввода данных? Тогда аддон FuzzyFox – к твоим услугам.

Игры с кукисами

Важная часть данных, которыми обменивается веб-сервер и браузер – это кукисы. Каждый раз, когда форум узнает тебя, а не спрашивает имя и пароль заново, в этом участвуют кукисы и сессии. Если немного с ними помухлевать, вполне реально добиться интересного результата. Увы, все, на что способен сам Firefox – это кнопка «Удалить все cookies», да и то не всегда работает как надо (подробности чуть ниже). Чтобы иметь интерфейс для прямого доступа к кукисами, придется устанавливать плагин Add N Edit Cookies, позволяющий добавлять и редактировать параметры текущей сессии и все сохраненные кукисы. Если же тебе интересно, кто и в какой форме сохраняет «плюшки», которые скопом накапливаются у тебя на жестком диске, рекомендую установить насадку Allcookies – та в удобной форме будет логировать всю информацию в текстовый файл. Еще один занятный и полезный плагин для работы с кукисами – это CookieSwap. После установки у тебя появляется тулбар, благодаря которому ты можешь быстро переключаться между различными профайлами, в каждом из которых хранится свой набор «плюшек». Я, к примеру, активно использую его, чтобы одновременно работать с разными аккаунтами на сервисах Google и, в частности, Gmail.

Ковыряем JS-скрипты

Если взять тот же самый Gmail, Facebook да и вообще любое веб-приложение, то оно буквально изобилует кодом на JavaScript. А там, где много кода, есть много ошибок, которые мы любим искать. К счастью, одним из самых мощных плагинов для Firefox является именно отладчик Javascript – Firebug. По совместительству это еще и самый лучшей дебаггер для JS в принципе, который идеально подходит для того, чтобы разобраться с чужим JS-кодом. С помощью Firebug ты легко можешь установить брейкпоинты в нужных местах скрипта, указывая на то, что выполнение сценария нужно остановить при достижении нужной строчки кода. Поддерживаются и if-breakpoint’ы, когда точка останова срабатывает только при наступлении оговоренного условия. Как только выполнение скрипта остановилось, ты можешь продолжить его выполнения пошагово, внимательно отслеживая значение всех переменных и объектов. Причем можно даже просмотреть значение сложных выражений, состоящих из различных переменных; для этого к твоим услугам система watch’ей. Впрочем, даже если просто в коде навести курсор на какую-то переменную во время выполнения скрипта, то отладчик выдаст подсказку с его текущим значением. Firebug интегрируется в Firefox на глубоком уровне и позволяет в реальном времени изменять и отладить не только JS-сценарии, но и выполнение HTML-кода, CSS на абсолютно любой странице. Одна из моих любимых фишек – опция Inspect, когда ты кликаешь на нужный тебе элемент сайта, а Firebug мгновенно находит в сорцах код, который этот элемент реализует. Отладчик неплохо справляется с определением всех связных файлов со страницей, хотя для этой цели еще лучше подходит отдельный плагин – View Dependencies. Это особенно важно, когда имеешь дело со сложным веб-приложением, подгружающим массу отдельных файлов с JS/CSS-кодом.

Интерпретация и компиляция (да-да, часть JS-кода компилируется встроенным в браузер JS-движком с целью увеличения производительности) производится на клиентской машины, и чтобы защитить свой код от копирования, разработчикам приходится использовать важный прием – обфускацию кода. Техника на особом счету и у разработчиков сплойтов, которые, во-первых, маскируют таким образом свои детища от сигнатурных антивирусов (ведь не так сложно распознать шеллкод в JavaScript), а, во-вторых, скрывают саму технику эксплуатирования уязвимости в браузере. Если прочитаешь статью «Операция Аврора», то разберешься, как справится с простейшим приемом шифрования сплойта. Существенно упростить задачу, а во многих случаях даже все сделать за тебя может плагин JavaScript Deobfuscator. После установки у тебя всегда будет возможность посмотреть, какой JS-код выполняется на странице, причем даже в том случае, если он генерируется (в частности расшифровывается) на лету. Нужно лишь вызвать плагин из меню «Tools» и посмотреть, какие скрипты на этой странице выполняются/компилируются.

Инъекции, XSS, отсутствие авторизации

Если тебе нужен инструмент для помощи в поиске XSS-дыр, осуществления SQL-инъекции и выполнения прочих атак прямо внутри сайта, то самое время установить в Firefox’е тулбар HackBar. Фишка в том, что с его помощью ты сможешь очень быстро выполнять ряд тривиальных действий для поиска уязвимостей в скриптах, вроде подстановки зловредных значений в разные места ввода данных. К тому же в HackBar встроено несколько инструментов, позволяющих зашифровать зловредный запрос, позволяя обойти простейшие фильтрации параметров. Если дальше продолжать разговор про SQL-инъекции, то тут есть специальный плагин с незатейливым названием SQL Injection. В плагин забит ряд популярных символьных комбинаций, которые могут нарушить целостность SQL-запроса, логику выполнения скрипта и, соответственно, предоставить возможность реализовать атаку. Еще более автоматизированную атаку на БД предлагает SQL Inject Me, разработанную security-командой Seccom Labs. В те значения, которые передаются скрипту на сервере, плагин вставляет «опасные» символы (вроде кавычки) и проверяет, не вернулась ли в ответ страница с ошибкой базы данных. Поля для проверки выбираешь ты сам с помощью специального интерфейса. От тех же ребят есть серьезный инструмент для поиска XSS-уязвимостей XSS Me. Она работает аналогичным образом и сабмитит HTML-формы, подставляя в поля отправляемой формы такие значения, которые теоретически могут выявить XSS-атаку. Если результирующая HTML-страница вернет специальное JS-значение (document.vulnerable=true), тулза автоматически помечает страницу как потенциально уязвимую к XSS.

Анализ Flash-содержимого

Важная часть веба сегодня – это Flash-компоненты, с помощью которых реализуются интерактивные приложения. Анализировать SWF-ки – непростая задача, но кое-какую информацию об их работе выудить можно. В этом плане лакомым аддоном является Flashbug, который работает в связке с Firebug’ом и позволяет подробно изучать SWF-ресурсы, встроенные в сайт. В Firebug’е появляется новая вкладка, на которой отображаются все «трейсы» приложения, а также AMF-данные, передающиеся от и до сервера – это специальные сообщения, в которых сериализируются (проще говоря, упаковываются) объекты используемого во Flash языка ActionScript. Другой плагин – FireFlash – позволяет помимо всего прочего просмотреть ActionScript классы, объекты, массивы, XML и другие данные Flash-компонента, причем опять же через Firebug console. Тут надо понимать, что эти инструменты предназначены в первую очередь для разработчиков, но будут крайне полезны для изучения чужих SWF-ок, например, приложений ВКонтакте. Оба аддона не работают без установленного отладчика Firebug, который отличается от многих других надстроек для Firefox тем, что сам имеет плагины.

Анонимность и безопасноть

Если говорить о пентесте, нельзя не упомянуть аспекты своей собственной безопасности и анонимности. Возьмем обычное действие – работу через прокси. Зачастую их приходится использовать даже не для того, чтобы скрыть IP. Сейчас полно сервисов, которые банально не работают с пользователями, у которых российский IP: взять хотя бы Google Voice, Pandora Radio и т.д. А через американский сокс – все отлично. Для того, чтобы добавлять в браузер нужные прокси и быстро между ними переключаться, нет лучше плагина, чем FoxyProxy. Если задача стоит как раз обмануть фильтрацию упомянутых сервисов, можно четко забить для них индивидуальные прокси из Америки, и браузер автоматически их будет использовать. Чтобы в любой момент переключиться на нужный прокси, нужен один клик мыши. Более того, плагин предоставляет некоторые уникальные фишки, например, циклическое переключение по заданному списку соксов – вот и задачка для тех, кто будет анализировать логи.

Если для обесечения анонимности ты используешь Tor, то к Firefox’у обязательно нужно подключить Torbutton, включающий и выключающий безопасное соединение. Продолжая тему шифрования, крайне рекомендую закачать аддон FireGPG. В этом случае ты сможешь прямо из браузера шифровать, дешифровать, подписывать текст и проверять чужую цифровую подпись, в том числе в Gmail, используя открытый проект GnuPG. Большая головная боль при посещении различных ресурсов – так называемые Tracking-кукисы, которые не имеют срока годности и используются ресурсами для отслеживания твоей активности (например, возвращаешься ли ты на сайт или заходишь на него в первый раз). Это значит, что они не удаляются как обычные кукисы через некоторое время, а продолжают жить в системе. Это особенно касается Flash-cookies, которые создаются на компьютере как LSO-объекты (Local Shared Objects) флеш-плеером – их, как правило, вообще не может удалить браузер, даже не подозревая об их существовании. А зачем тебе на компьютере свидетельства посещения пикантных сайтов? Для предотвращения появления Tracking-кукисов в системе специально разработан плагин BetterPrivacy.

В обязательном порядке необходимо установить еще один плагин – NoScript. Он делает одну простую вещь – вообще отключает выполнение скриптов на сайте. Это единственный гарантированный способ серфить зараженные сайты, откуда пачками грузятся трояны, а также защитить себя от XSS и Clickjacking атак :). Тут стоит заметить, что скрипт отключит не только JS, но и Java и Flash – все технологи, которые могут выполнять код на твоем компьютере с удаленного хоста. В плане определения малвари на сайте хорошо зарекомендовал себя еще и Firekeeper, использующий правила известной IDS-системы Snort.

][-твики

Если посмотреть описание функций любого продвинутого трояна, то среди прочего обязательно заметишь опцию подмены контента. Благодаря ей злоумышленник может скрыть на сайте те элементы, которые могут вызвать подозрения пользователя (например, сообщения о неудачной авторизации) или, наоборот, подсунуть в форму для ввода новое поле, которого в изначальной форме не было. Для тестирования замен нередко используется аддон Greasemonkey, позволяющий изменять просматриваемые страницы на лету. Впрочем, его  можно использовать и для вполне мирных целей, например, чтобы избавиться от назойливых элементов на каком-то сайте. Изменения описываются с помощью скриптов – большая база уже готовых сценариев доступна на сайте userscripts.org. Еще одна хитрость – реализовать автоматизированные проверки и тестирования с помощью макросов. Один раз записав сценарий и показав браузеру последовательность действий, можно воспроизводить их сколько угодно раз в автоматическом режиме. Это возможно с помощью аддонов iMacros, TestGen4Web, а также Chickenfoot.

А какие твики и плагины знаешь ты? Присылай, и мы добавим их в нашу сборку!

Как исправить несовместимость версии плагина и браузера?

Firefox – это быстро развивающийся браузер, для которого очень часто выходят новые версии. Этого нельзя сказать о многих плагинах, которые когда-то были опубликованы авторами, попали в репозиторий и были благополучно заброшены. При этом в Firefox’е есть защита от дурака: если в плагине указано, что он совместим с версией браузера 3.5, то со свежей 3.6.3 он уже не установится. На обновление со стороны автора можно не надеяться, и как же тогда быть? Самый надежный путь – установить аддон Nightly Tester Tools. Теперь во время подключения устаревшего плагина ты получишь не отказ в установке из-за ошибки совместимости, а предложение включить аддон на свой страх и риск.

DVD

Упомянутые в статье плагины ты можешь взять с нашего DVD.

Используемые источники:

  • https://lumpics.ru/greasemonkey-for-mozilla-firefox/
  • https://habr.com/post/39431/
  • https://xakep.ru/2010/12/05/54152/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации