Как рас­ширить воз­можнос­ти C2-маяка, не перепи­сывая его код и не под­став­ляясь под анти­виру­сы? В статье раз­бира­ем Beacon Object Files — лег­кий модуль­ный спо­соб добав­лять новые фун­кции пря­мо на лету. С помощью BOF мож­но про­водить пос­тэкс­плу­ата­цию, зак­репле­ние, эксфиль­тра­цию и выпол­нять любые кас­томные задачи без доработ­ки самого маяка.

Нап­ример, для про­веде­ния фишин­говой ата­ки тебе нуж­но раз­работать маяки, которые запус­кают­ся на зах­вачен­ной машине и отсту­кива­ют какому‑то C2-сер­веру. Да, по сво­ей сути маяк прос­то дол­жен сох­ранять соеди­нение с C2, и ты получа­ешь уда­лен­ный дос­туп к тач­ке. Но, как пра­вило, тебе при­дет­ся занимать­ся пос­тэкс­плу­ата­цией, эксфиль­тра­цией, делать зак­реп на машине.

Те­бе, конеч­но, не захочет­ся перепи­сывать маяк, раз­дувать его код и добав­лять туда новые фун­кции. Любую активность к тому же может запалить анти­вирус. Хорошо бы исполь­зовать инс­тру­мент, который уже будет обла­дать необ­ходимы­ми фичами, а еще луч­ше, что­бы его мож­но было рас­ширять в режиме онлайн. Имен­но для это­го при­дума­ли Beacon Object File, или сок­ращен­но BOF.

Beacon Object File — это кон­цепция, которая впер­вые зас­ветилась в 2021 году — в Cobalt Strike, самом извес­тном фрей­мвор­ке для пос­тэкс­плу­ата­ции. Beacon Object File — это ском­пилиро­ван­ная прог­рамма на язы­ке C, которая может выпол­нять­ся в про­цес­се работы маяка и исполь­зовать внут­ренние Beacon API. BOF — это спо­соб быс­тро­го рас­ширения аген­та новыми фун­кци­ями.

BOF поз­воля­ет заг­ружать в память натив­ный код во вре­мя выпол­нения маяка. Про­цесс похож на заг­рузку и выпол­нение DLL, но поз­воля­ет оста­вать­ся более незамет­ным. Сами BOF — это не исполня­емые фай­лы, они пред­став­лены в фор­ме Microsoft Common Object File Format (сок­ращен­но COFF).

info

Common Object File Format (COFF) — это фор­мат исполня­емых фай­лов, фай­лов объ­ектно­го кода и динами­чес­ких биб­лиотек.

Я решил про­верить свой BOF на C2 Adaptix, который раз­работал RalfHacker. Это дос­той­ная замена для Cobalt Strike и опен­сор­сно­го Havoc. Adaptix — это рас­ширя­емый фрей­мворк для пос­тэкс­плу­ата­ции, раз­работан­ный спе­циаль­но для пен­тесте­ров. Сер­вер Adaptix написан на Golang, кли­ент­ский гра­фичес­кий интерфейс — на C++ и Qt, что поз­воля­ет исполь­зовать его в Linux, Windows и macOS.

Что ж, давай сядем за кла­виату­ру и нач­нем писать свой пер­вый прос­тень­кий BOF.

warning

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

 

Создаем скелет

Для начала соз­дам дирек­торию, которая называ­ется bofs, и сде­лаю файл для BOF под наз­вани­ем example.c. Спер­ва прос­то соз­дадим фун­кцию, которая будет точ­кой опо­ры:

void go()
{
}

Для ком­пиляции нуж­но исполь­зовать MinGWGCC. В Linux я буду ком­пилиро­вать так:

x86_64-w64-mingw32-gcc -c -o example.o example.c

Здесь -c — опция, которая сооб­щает ком­пилято­ру о том, что это объ­ектный файл.

Те­перь вве­ду file example.o и получу информа­цию о том, что это COFF object file.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии