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.