• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Beef - фреймворк для проведения атак

tabac

CPU register
Пользователь
Регистрация
30.09.2018
Сообщения
1 610
Решения
1
Реакции
3 332
Beef - фреймворк для проведения атак

Мы обещали новую серию о взломе веб-приложений, мобильных устройств и даже Facebook и мы намерены в этом году сдержать обещание. В каждой из этих тем мы расскажем вам о новых инструментах и методах взлома, однако у нас будет один инструмент, который мы будем использовать во всех этих темах. Он называется Browser Exploitation Framework или BeEF (не спрашивайте нас о том, что означает «e» в нижнем регистре — мы не знаем).

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

BeEF был разработан группой разработчиков под руководством Уэйда Алькорна на известной платформе Ruby on Rails. BeEF был создан для выявления уязвимостей в браузерах и их тестирования. В частности, BeEF — отличная платформа для тестирования уязвимости браузера для межсайтового скриптинга (XSS) и других инъекционных атак.


Шаг 1. Запустите BeEF

BeEF встроен в Kali Linux, его можно запустить как сервис и получить доступ через веб-браузер на вашем компьютере (localhost). Итак, давайте начнем с того, что запустим Kali, а затем и BeEF. Перейдите в «Приложения» -> «Kali Linux» -> «Системные службы» -> «BeEF» -> «beef start».

20ZIXeP.jpg



Шаг 2. Откройте браузер и перейдите к BeEF

Доступ к серверу BeEF осуществляется через любой браузер на нашем локальном веб-сервере (127.0.0.1) на порту 3000. Для доступа к его странице аутентификации перейдите по ссылке:
Код:
http://localhost:3000/ui/authentication
Учетные данные по умолчанию — «beef» для имени пользователя и пароля.

hB7N1vg.jpg


Отлично! Теперь вы успешно залогинились в BeEF и готовы начать использовать эту мощную платформу для взлома веб-браузеров.

Обратите внимание, что на скриншоте ниже наш локальный браузер 127.0.0.1 появился в левой панели «Hooked Browsers» после того, как кликнули по ссылке демонстрационной страницы. BeEF также отображает окно «Начало работы» с правой стороны.

ZMpkWOR.jpg



Шаг 3. Просмотр сведений о браузере

Если мы кликнем на локальный браузер, то он выдаст несколько вкладок с информацией справа, включая окно «Details», где можно получить все подробности о нашем браузере. Поскольку мы используем браузер Iceweasel, встроенный в Kali, который построен на Firefox, то он показывает, что это браузер Firefox.

Он также показывает номер версии (24), платформу (Linux i686), любые компоненты (Flash, веб-сокеты) и дополнительную информацию, которую мы можем использовать в последующих хаках веб-приложений.

OOdNgiH.jpg



Шаг 4. Захват браузера

Ключом к успеху работы с BeEF является «захват» браузера. Это означает, что нам нужна жертва для посещения уязвимого веб-приложения. Инжектированный в «захваченном» браузере код потом будет отвечать на команды с сервера BeEF. И оттуда же мы сможем делать ряд вредоносных вещей на компьютере жертвы.

У BeEF есть JavaScript-файл под названием «hook.js» и если мы сможем заставить жертву выполнить его в уязвимом веб-приложении, то мы «захватим» его браузер! В будущих статьях мы рассмотрим несколько способов «захвата» браузера жертвы.

На скриншоте ниже мы «захватили» браузер Internet Explorer 6 на старой машине с Windows XP в нашей локальной сети по IP 192.168.89.191.

HQLaINY.jpg



Шаг 5. Запуск команд в браузере

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

  • Получить посещенные домены
  • Получить посещенные URL-адреса
  • Веб-камера
  • Получить все файлы cookie
  • Захват Google Контактов
  • Скриншот

На скриншоте ниже мы выбрали команду «Веб-камера», которая многих из вас может заинтересовать. Когда выполняется эта команда, на экране пользователя появляется диалоговое окно Adobe Flash: «Разрешить Веб-камеру?» Если он нажмет «Разрешить», то браузер начнет слать вам картинки с машины жертвы.

Конечно, текст запроса можно изменять, так что будьте креативны. Например, вы можете настроить кнопку так, чтобы она выводила: «Вы только что выиграли в лотерею! Нажмите здесь, чтобы получить выигрыш!» или «Ваше программное обеспечение устарело. Нажмите здесь, чтобы обновить и защитить ваш компьютер». Подобные сообщения могут побудить жертву кликнуть по кнопке.

RMJIk3l.jpg



Шаг 6. Получение файлов cookie

Как только мы захватим браузер, у нас появляются практически неограниченные возможности того, что мы можем сделать. Если мы хотим получить куки жертвы, то мы можем перейти в «Расширения Chrome» и выбрать «Get All Cookies», как показано на скриншоте ниже.

gS1o6VT.jpg


Когда мы кликнем на кнопку «Execute» в правом нижнем углу, она начнет собирать все файлы cookie из браузера. Очевидно, что после того, как у вас появятся все cookie-файлы пользователя, то вы, скорее всего, также получите доступ и ко всем его веб-сайтам.

BeEF — это экстраординарный и мощный инструмент для использования веб-браузеров. В дополнение к тому, что мы показали вам здесь, его также можно использовать для атак против операционной системы. Мы будем использовать его и другие инструменты в нашей новой серии по взлому веб-приложений, мобильных устройств и Facebook, так что обязательно возвращайтесь!
 
Beef фреймворк для проведения XSS атак. Руководство пользователя.

XSS-атаки (сross-site scripting) уже давно вышли за рамки угона сессии через document.cookie на сниффер злоумышленника. Думаю, многие хорошо помнят даже различные онлайн-сервисы, которые позволяли с легкостью вставлять нужный пейлоад и ждать, пока на e-mail придет уведомление с данными жертвы. Сейчас на дворе 2016 год, так что предлагаю оставить все вышеописанное где-то в 2007 и вернуться в реальность. Сегодня речь в статье пойдет о популярном инструменте, который помогает выжать максимум из простого внедрения JS-кода. Итак, знакомься — BeEF.

BeEF — это фреймворк, позволяющий централизованно управлять пулом зараженных через XSS клиентов, отдавать команды и получать результат. Он работает следующим образом:
  • злоумышленник внедряет на уязвимый сайт скрипт hook.js;
  • hook.js сигналит C&C (BeEF) о том, что новый клиент онлайн;
  • злоумышленник входит в панель управления BeEF и удаленно «рулит» зараженными брaузерами: исполняет пейлоад и получает ответ.
Жертве достаточно выполнить в своем браузере hook.js, и она станет очередным «зомби», которому можно будет посылать различные команды, подсовывать вредоносные экзешники и так далее. А от злоумышленника требуется просто запустить beef-xss и открыть в браузере панель управления, в которой, собственно, все самое интересное и происходит.

BeEF «из коробки» содержит уйму встроенных техник, эксплойтов, плагинов и значительно облегчает одновременную работу со множеством клиентов. Конечно же, зараженный пользователь может покинуть страницу с внедренным скриптом, но специально для этих целей существует атака Man-in-The-Browser, которая позволяет следить за всеми действиями клиента в контексте одного домена, пока он остается на сайте или собственноручно не поменяет адрес в строке URL.

Установка BeEF
Начать надо, конечно, с установки. Я рассматриваю ситуацию, в которой у нас есть своя впс/вдс где-то в облаках с белым айпишникoм и Ubuntu 14:
Код:
root@myownvpn:~# uname -a
Linux myownvpn 3.13.0-52-generic #85-Ubuntu SMP Wed Apr 29 16:44:17 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Действуем по официальной инструкции, которую можно найти в репозитории на гитхабе. BeEF написан на Ruby, поэтому установка стандартная для большинства небольших руби-приложений: rvm, ruby, bundler и bundle install. В общем, проблем возникнуть не должно.

Кстати, BeEF также включается в дефолтную поставку Kali Linux 2, поэтому если ты используешь творение Offsec’а, то BeEF у тебя уже установлен.


Использование

После запуска beef-xss открываем в нашем браузере ссылку http://127.0.0.1:3000/ui/authentication и логинимся как beef:beef. Отлично, у нас есть все, что нужно. Чтобы протестировать работу BeEF’a, предлагаю «захукать» свой жe браузер, перейдя на страницу /demos/basic.html. Как видно в исходном коде, у нас подгружается тот самый hook.js, и теперь в разделе Online Browsers появился хост и список «захуканных» клиентов. Это и есть наши зараженные зомби.

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


Социальная инженерия

Для начала выберем что-нибудь простое и понятное — открываем раздел Social Engineering и попробуем провернуть фишинг логина в гугл-аккаунт. Для этого нам достаточно указать страницу, на которую будет перенаправлен пользователь, и задержку (delay) до редиректа. Заполняем (или, в нашем случае, оставляем как есть), нажимаем кнопку Execute — волшебным образом содержимое страницы меняется на знакомый и привычный глазу интерфейс авторизации в гугл-почте!

eRujHf1.png

Фишинговая страница логина в GMail, показанная жертве с помощью BeEF

Притворимся, что мы жертва, и введем какие-нибудь данные. После нажатия кнопки Sign in нас перенаправляет на настоящую авторизацию Гугла и заодно перекидывает на указанную ранее в настройках страницу. Как можно увидеть, нажав в BeEF’е на отправленную команду, мы успешно перехватили введенные пользователем данные.

45kKldU.png

Перехваченные через BeEF данные от Гмейла


Самые основные команды

Где же старый добрый document.cookie, который всем так нужен? Да тут же, под рукой — в разделе Hooked Domain найдется достаточно команд для почти мгновенного доступа к различной информации из браузера жертвы, в том чиcле и вожделенным «печенькам».

Этим несложным образом можно получить список подключенных на странице скриптов и ссылок или весь исходный код страницы. Отдельное внимание я советую уделить такой фиче, как замена ссылок — изменить всё так, чтобы каждая ссылка на странице вела на нужный нам адрес. Среди всех доступных команд есть даже перенаправление пользователя на ролик с песней «Never gonna give you up» — классика как-никак!

yfE4pDA.png



Фингерпринт

Помимо всего вышеописанного есть раздел Browser, в котором собрано множество полезных фич для максимального фингерпринта браузера жертвы. Можно узнать список установленных расширений в браузере, наличие LastPass, FireBug и т.д. С помощью команды «Webcam» можно попробовать подсунуть пользователю Flash-плагин для работы с вебкой, жаль только, что данная техника уже устарела, как и Flash в целом. Не буду перечислять и описывать все фичи, а посоветую тебе изучить их самостоятельно, заодно проверив актуальность в современных браузерах.


Эксплойты

Следующий интересный нам раздел — Exploits, как ни странно. В нем найдется множество готовых векторов для эксплуатирования различных уязвимостей. Прежде всего я советую обратить внимание на сплойты для различных роутеров. Мы уже не раз писали, какие фатальные баги иногда содержат роутеры: часто от безобидных XSS’ок получается раскрутить их до полноценного RCE через CSRF. К слову, тот же сценарий повторяется и с многими другими устройствами, которые находятся в сети потенциальной жертвы, будь то NAS, камеры, локальные сервисы и так далее. Список эксплойтов, конечно, не может похвастаться зиродеями или огромным выбором, но ведь никто не запрещает писать кастомные плагины для бифа под свои уязвимости


Атака на браузер, сниффинг отправляемых данных

Одной из самых интересных атак при использовании XSS можно назвать Man-in-The-Browser. Она позволяет отслеживать различные действия инфицированного пользователя на всем ресурсе, а не только на странице с пейлоадом. Эффект достигается за счет фоновой подгрузки запрошенной страницы по клику и подмены DOM, без изменения реального location’a браузера (примерно как в рельсовом turbolinks). Естественно, эта фишка сработает только при соблюдении SOP: запрошенная страничка должна иметь тот же протокол, порт и домен, а иначе загрузки просто не произойдет.

Это крайне удобная фича, избавиться от которой можно только путем прямого изменения URL адреса в строке браузера. Как можно увидеть, в логах отображаются все действия, выполненные пользователем, такие как ввод и отправка POST/GET запросов, открытие других сайтов в новом окне и т.д.

bTwTaXk.png

BeEF отлавливает попытки перехода по другую страницу и подгружает данные динамически


Работа с сетью

Многие функции из секции Network могут не работать, например, детект социальных сетей у меня упорно отказывался работать. Подозреваю, что там использовалась баги/фичи, которые были прикрыты сервисами. Но не надо расстраиваться: всегда стоит помнить, что в некоторых ситуациях даже одна XSS в браузере жертвы может привести к компрометации всей домашней сети. Поэтому обрати внимание на различные сетевые сканнеры, представленные в BeEF’е. Как показывает практика, далеко не все из них будут работать в современных браузерах, но команда GET HTTP servers у меня отработала и честно нашла в локальной сети старенький Zyxel с веб-интерфейсом. Конечно, детект серверов очень простой и основывается на попытке подгрузить favicon с каждого из указанных в диапазоне апишников.

Еще советую посмотреть на такую замечательную функцию, как сканирование сети с использованием словаря DNS-имен. Кто знает, вдруг вы для удобства назвали свой роутер «router»?


MSF

Детект и фингерпринт внутренней сети это, конечно, замечательно, как и попытки использовать различные сплойты под роутеры со всякими CSRF/XSS/etc. Но что, если мы хотим стать крутыми хакерами и попробовать сразу пробить браузер жертвы? Нет ничего проще, ведь BeEF поддерживает использование Metasploit’а. Это, конечно, не приватные связки с 0day, но никто и не гарантирует, что у пользователя будет последняя версия браузера/плагинов

Чтобы подружить metasploit и beef, достаточно выполнить несколько простых действий:
  1. Открыть главный config.yaml (у меня в Kali он был расположен по адресу /usr/share/beef-xss/), найти раздел Extension и у Метасплойта изменить значение параметра enable на true.
  2. Открыть файл настроек плагина метасплойта (например, /usr/share/beef-xss/extensions/metasploit/config.yaml) и изменить параметры host, callback_host (остальное на твое усмотрение).
  3. Запустить метасплойт и выполнить команду: msf > load msgrpc ServerHost=192.168.186.149 User=msf Pass=abc123
Перезапуск BeEF’а — и нашему взору открываются несколько сотен модулей метасплойта, которые можно применять по своему усмотрению. Давай рассмотрим простой пример использования связки BeEF + Metasploit. Возьмем модуль browser_autopwn2, настроим и запустим его.
Код:
msf > use auxiliary/server/browser_autopwn2
msf auxiliary(browser_autopwn2) > show options
            …тут указываем опции, например SRVHOST…
msf auxiliary(browser_autopwn2) > run
Для удобства использования и настройки в качестве URIPATH я указал /autopwn. Теперь идем в BeEF, выбираем раздел Misc и используем команду на добавление невидимого фрейма. В качестве адреса просто указываем что-то в духе http://наш_ip:8080/autopwn. После отправки команды видно, что в браузере жертвы фрейм с связкой подгрузился, а все остальное уже на совести метасплойта. Точно таким же образом можно использовать и другие модули Metasploit’а и SET’а (отличный инструмент широкого спектра возможностей для атак, связанных с соц. инженерией).


Атаки на расширения браузера

Еще один интересный и часто использующийся вектор атаки — атака на расширения пользователя. В случае успеха она гарантирует нам гораздо большие возможности, нежели простое внедрение скрипта на страничку сайта, ведь у расширений куда больше прав. Специально для этих целей был создан аналог BeEF’а, который в итоге перерос в самостоятельный полноценный фреймворк — Chrome Extension Exploitation Framework, или просто ChEF. Среди его возможностей выделяются такие фичи, как:
  • мониторинг открытых вкладок в браузере;
  • глобальное выполнение JS кода на любой из вкладок (global XSS);
  • чтение http-only кукисов;
  • получение и изменение истории браузера;
  • снятие скриншотов окон браузера;
  • доступ к файловой системе через file://;
  • внедрение BeEF.
Этот инструмент стоило упомянуть, но он заслуживает отдельного материала, поэтому в данной статье не будем расписывать все, на что ChEF способен.


Выводы

Конечно, можно было бы описать еще часть функциональности BeEF’a, рассказать про phonegap, инфицирование мобильных приложений, применение при MiTM’е и т.д., но все это, к сожалению, не умещается в формат одной статьи. Кратко говоря, BeEF — это действительно самый удобный и самый крутой (во всех смыслах) фреймворк для работы с XSS, который выжимает из простого внедрения JS-кода абсолютный максимум, оставляя место для творчества (BeEF — проект опенсорсный), и к тому же поддерживает кастомные плагины. Такой инструмент прекрасно подходит как и для проведения пентестов, так и для решения различных CTF-тасков и всего, на что еще способна твоя фантазия.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх