BeEF (сокращение от Browser Exploitation Framework) – платформа для эксплуатации клиент-сайд уязвимостей. BeEF — это фреймворк с открытым исходным кодом, который фокусируется на работе с браузером, несет в себе набор всевозможных инструментов для тестирования на проникновение, векторами атаки на стороне клиента.
Принцип работы.
-
Злоумышленник внедряет на уязвимый сайт созданный или сгенерированный скрипт
-
Скрипт сигналит BeEF о том, что новый клиент находится в режиме онлайн;
-
Злоумышленник входит в панель BeEF и удаленно осуществляет управление зараженными браузерами: исполняет пейлоады и получает ответы.
Что бы стать жертвой достаточно выполнить в своем браузере hook.js, в результате выполнения скрипта браузер жертвы становится «ботом», которому можно будет посылать различные команды, вредоносные исполняемые файлы и так далее. От злоумышленника требуется минимум усилий, достаточно просто запустить beef-xss и открыть в браузере панель управления.
Установка.
BeEF является кроссплатформенным и может быть установлен на Linux, MacOS или Windows систему, а также входит в состав Kali Linux.
Полную информацию об установке можно получить в файле INSTALL.txt или в разделе WIKI проекта BeEF на Github. https://github.com/beefproject/beef/wiki/Installation
Настройка:
Весь процесс настройки BeEF следует осуществлять через конфигурационный файл:config.yaml
Настройка веб-сервера:
http: debug: false # Будет печатать подробные сообщения в консоль BeEF host: "0.0.0.0" # IP адрес веб-сервера port: "3000" # Порт веб-сервера # Если BeEF работает за обратным прокси или NAT # возможно осуществить настройку # публичного имени хоста и порта public: "8.7.6.5" public_port: "3000" dns: "localhost" # Адрес сервера DNS web_ui_basepath: "/ui" # Путь до административного пользовательского интерфейса hook_file: "/hook.js" # Путь до скрипта хука hook_session_name: "BEEFHOOK" # Имя сессии session_cookie_name: "BEEFSESSION" # Имя куки BeEF
Настройка сетевых ограничений:
В BeEF управление возможно осуществить ограничение через подсети. Например:
restrictions: permitted_hooking_subnet: "10.1.0.0/16" permitted_ui_subnet: "127.0.0.1/32"
Настройка расширений
extension: requester: enable: true proxy: enable: true metasploit: enable: false social_engineering: enable: true evasion: enable: false console: shell: enable: false
Metasploit
Расширение Metasploit должно быть настроено изменением файла config.yaml в extensions/metasploit
name: 'Metasploit' enable: true host: "127.0.0.1" port: 55552 user: "msf" pass: "abc123" uri: '/api' ssl: true ssl_version: 'TLS1' ssl_verify: true callback_host: "127.0.0.1" autopwn_url: "autopwn"
Для работы можно оставить почти все настройки со значением «По-умолчанию». Исключениями являются host и callback_host, которые следует менять ip-адрес хоста.
!!! Для включения RPC коммуникации, в Metasploit следует запустить следующую команду:
load msgrpc ServerHost=127.0.0.1 User=msf Pass=abc123 SSL=y
Первые шаги.
После всех настроек, можем запустить BeEF.
При запуске BeEF запускается управляющий сервер благдаря которому происходит взаимодействие с управляемыми браузерами и также нам становится доступным веб-интерфейс.
Логин и пароль по умолчанию BeEF. После авторизации у нас очень ограниченные возможности. Присутствует базовый гайд и пара тестовых страниц в которых уже залит наш скрипт и мы можем посмотреть как все работает.
Что бы получить доступ ко все возможностям данного фреймворка, необходимо выполнить захват какого либо браузера. Это можно сделать несколькими способами.
1 способ- На какой либо странице используя XSS-уязвимость спрятать наш скрипт.
2 способ- Заманить жертву на какой либо заранее подготовленный сайт.
Рассмотрим захват браузера на примере XSS игры от Google. Введем данные и посмотрим как отреагирует приложение.
Введенная информация отобразилась на странице. Рассмотрим вариант с тегами, как на них отреагирует приложение. Отправляем запрос и сразу же смотрим в исходный код.
Видим, что тег успешно добавился, теперь, вставим в страницу расположение скрипта. Отправляем запрос и как результат мы должны захватит браузер жертвы, и он должен появиться в перечне онлайн браузера.
После захвата какого-либо браузера, нам становится доступна информация о нем, а именно что это за браузер, каким хостом используется, какие плагины установлены, с какой ОС используется и так далее.
Кроме того нам стали доступны различные модули, которые собраны во вкладке Commands, c помощью которых можно развивать нашу атаку.
Используя BeEF следует помнить, что если жертва закроет страницу со скриптом то мы потеряем доступ, поэтому неоходимо закрепиться в захваченном браузере. Для этих целей существуют модули Persimence.
Заключение:
BeEF — очень грозное «оружие» в умелых руках, дает атакующему огромное количество информации, которую, в дальнейшем, можно сохранять и использовать в атаках.
Для более подробного ознакомления с BeEF воспользуйтесь ресурсом https://github.com/beefproject/beef/wiki.