Посібник з CobaltStrike. №2 Управління даними

14 червня 2023 5 хвилин Автор: Lady Liberty

Комплексний фреймворк для управління даними та тестування на проникнення

CobaltStrike є потужним інструментом, який не тільки дозволяє проводити тестування на проникнення, але й надає зручні засоби для ефективного управління даними під час цього процесу. Завдяки своїм розширеним функціям управління даними, CobaltStrike сприяє збору, аналізу та використанню інформації з метою забезпечення найвищого рівня безпеки. Одним з ключових аспектів управління даними в CobaltStrike є здатність збирати та агрегувати інформацію з різних джерел та джерел збору даних. Це включає реєстрацію активності, перехоплення мережевого трафіку, запис клавіатурних натисків та інші дії, що допомагають виявляти потенційні загрози та вразливості.

Крім того, CobaltStrike пропонує зручні інструменти для аналізу зібраних даних. Це включає можливість проводити пошук, фільтрацію та візуалізацію інформації, що допомагає знайти ключові зв’язки та зробити обґрунтовані висновки. Такий аналіз дозволяє знайти слабкі місця в системах, ідентифікувати потенційні загрози та прийняти необхідні заходи для забезпечення безпеки. Крім того, CobaltStrike надає можливість ефективно керувати зібраними даними, зокрема зберігати їх, експортувати у різні формати та надавати доступ до них командам для подальшого аналізу та розробки стратегій захисту. Це дозволяє створювати цінні звіти та рекомендації на основі зібраної інформації, сприяючи покращенню безпеки та реагуванню на потенційні загрози. Використання CobaltStrike для управління даними під час тестування на проникнення дозволяє експертам з кібербезпеки збирати, аналізувати та використовувати інформацію з метою ефективного виявлення загроз та забезпечення надійного захисту. Цей функціонал робить CobaltStrike незамінним інструментом для професіоналів, які прагнуть підвищити рівень безпеки інформаційних систем.

Управління даними

C&C Server компанії Cobalt Strike є брокером для інформації, зібраної Cobalt Strike під час вашої роботи. Cobalt Strike аналізує дані, отримані від Beacon, для вилучення цілей, послуг та облікових даних. Якщо ви хочете експортувати дані Cobalt Strike, ви можете зробити це за допомогою Звітування -> Експортувати дані. Cobalt Strike надає можливість експорту даних в TSV і XML файли. Функція експорту даних клієнта Cobalt Strike об’єднує дані з усіх C&C-серверів, до яких ви зараз підключені, та експортує їх у файли TSV та XML з даними з моделі даних Cobalt Strike.

Мета

Ви можете взаємодіяти з інформацією про цілі Cobalt Strike за допомогою Перегляд -> цілей. Ця вкладка відображає ту саму інформацію, що й у графічному відображенні цілей.

Натисніть кнопку Імпортувати, щоб імпортувати файл цільової інформації. Cobalt Strike приймає плоскі текстові файли з одним хостом на рядок. Він також приймає XML-файли, створені Nmap (з опцією -oX).

Натисніть Додати  , щоб додати нові цілі до моделі даних Cobalt Strike.

Додавання цілі

У цьому діалоговому вікні можна додати декілька хостів до бази даних Cobalt Strike. Вкажіть діапазон IP-адрес або використовуйте нотацію CIDR у полі Адреса, щоб додати кілька хостів за один раз. Утримуйте натиснутою клавішу Shift і натисніть кнопку Зберегти, щоб додати хости до моделі даних і залишити це діалогове вікно відкритим.

Виберіть один або кілька хостів і клацніть правою кнопкою миші на них, щоб відкрити меню. У цьому меню можна змінити опис хостів, задати інформацію про їх операційній системі або видалити хости з моделі даних.

Служба

У списку цілей клацніть правою кнопкою миші на хості та виберіть Служби. Відкриється Cobalt Strike Service Explorer. Звідси ви можете переглядати служби, анотувати їх і видаляти записи служб.

Діалогове вікно «Послуги»

Облікові дані

Перейдіть  до View -> Credentials, щоб взаємодіяти з моделлю облікових даних Cobalt Strike.

Натисніть  кнопку Додати, щоб додати запис до моделі облікових даних. Також можна утримувати клавішу Shift і натискати кнопку Зберегти, щоб  вікно залишалося відкритим і полегшувало додавання нових облікових даних до моделі. Натисніть кнопку Копіювати, щоб скопіювати вибрані записи до буфера обміну. Використовуйте Export для експорту облікових даних у форматі PWDump.

Модель облікових даних

Служба

Модель даних Cobalt Strike зберігає метадані про стан та стан у папці data/. Ця папка знаходиться в папці, з якої ви запустили  C&C  сервер Cobalt Strike.

Щоб очистити модель даних Cobalt Strike: зупиніть C&C-сервер, видаліть  папку даних/  папку та її вміст. Cobalt Strike повторно створить  папку даних /  під час наступного запуску C&C сервера.

Якщо ви хочете створити резервну копію  моделі даних, зупиніть C&C-сервер і використовуйте свою улюблену програму для збереження папки даних/ та її файлів в інше місце. Щоб відновити модель даних, зупиніть C&C-сервер і відновіть старий вміст у папці data/. Reporting  -> Reset Data скидає модель даних Cobalt Strike без перезавантаження  C&C-сервера.

Listener’и та управління інфраструктурою

Першим кроком будь-якої взаємодії є створення інфраструктури. У випадку Cobalt Strike інфраструктура складається з одного або декількох C&C-серверів, переспрямовувачів і записів DNS, які вказують на ваші C&C-сервери і переспрямовувачі. Після того, як сервер C&C буде запущений, ви захочете підключитися до нього та налаштувати його на прийом з’єднань із зламаних систем. Слухачі – це механізм Cobalt Strike, який дозволяє це зробити.

Слухач є одночасно інформацією про конфігурацію корисного навантаження та вказівкою на створення Cobalt Strike сервера для прийому з’єднань з цього корисного навантаження. Слухач складається з визначеного користувачем імені, типу  корисного навантаження та кількох варіантів, специфічних для корисного навантаження

Управління Listener’оми

Щоб управляти Listener’оми Cobalt Strike’а, перейдите в Cobalt Strike  -> Listeners.

Відкриється вкладка зі списком всіх налаштованих корисних навантажень і Слухачів.

Малюнок 18. Вкладка “Керування лестенером”

Натисніть кнопку  Додати, щоб створити новий обробник. Відобразиться панель “ new Listeners

Використовуйте випадаючий список  Корисне навантаження, щоб вибрати один з доступних типів корисного навантаження / лестенера, який потрібно налаштувати.

Щоб відредагувати Lestener, виділіть його та натисніть кнопку “Редагувати“. Видалення

Lestener, виділіть його та натисніть кнопку Видалити.

Корисне навантаження маяка Cobalt Strike’а

Найчастіше ви налаштовуєте слухачів на маяк Cobalt Strike. Маяк є корисним навантаженням для імітації дій зловмисників.  Використовуйте його для передачі даних по мережі через HTTP, HTTPS або DNS. Можна також установити обмеження на відключення вузлів від мережі, керуючи одноранговими маяками через іменовані труби Windows і гнізда TCP.

Маяк гнучкий і підтримує асинхронне та інтерактивне спілкування. Асинхронна комунікація буває низькою і повільною («низька і повільна» схема зв’язку). Beacon зв’яжеться з сервером C&C, завантажить його завдання та припинить мережеву активність. Інтерактивне спілкування відбувається в режимі реального часу.

Мережеві індикатори Beacon можуть бути змінені. Перевизначте взаємодію Beacon за допомогою мови Malleable C2 від Cobalt Strike. Це дозволить вам замаскувати активність маяка, щоб вона виглядала як інше шкідливе програмне забезпечення або зливалася з законним трафіком.

Постановка корисного навантаження

Є одна тема, яка заслуговує на згадку в якості еталону – це постановочна корисне навантаження. Багато фреймворків атаки відокремлюють саму атаку від того, що вона виконує. Те, чого досягає атака, називається корисним навантаженням. Корисне навантаження часто ділять на дві частини: ступеневе і стажерне корисне навантаження. Stager зазвичай є невеликою, оптимізованою вручну програмою для мови асемблера, яка завантажує корисне навантаження сцени, вводить його в пам’ять і передає на виконання. Цей процес відомий як постановка.

Постановка необхідна для деяких нападів. Багато атак мають жорсткі обмеження на кількість даних, які вони можуть завантажити в пам’ять і виконати після успішної експлуатації. Це суттєво обмежує післяопераційні можливості, хіба що ви не доставляєте корисне навантаження для післяопераційної роботи поетапно.

Cobalt Strike використовує постановку в своїх атаках, керованих користувачами. Це більшість пунктів у розділах «Корисне  навантаження» та «Атака».  Використовувані там стадійники залежать від корисного навантаження, яка йде в зв’язці з атакою. Наприклад, HTTP-маяк має стагер HTTP. DNS Beacon має стадію записів DNS TXT. Не всі корисні навантаження мають опції стадій. Корисне навантаження без стайдера неможливо доставити за допомогою цих варіантів атаки.

Якщо вам не потрібна проміжна  корисне навантаження, ви можете відключити її. Установіть для параметра host_stage  у профілі Malleable C2 значення false. Це не дозволить Cobalt Strike розміщувати етапи корисного навантаження на своїх веб-серверах і DNS-серверах. Це велика перевага для OPSEC. З увімкненою постановкою будь-хто може підключитися до вашого сервера, запросити корисне навантаження та проаналізувати його вміст,  , щоб знайти інформацію в конфігурації вашого корисного навантаження.

У Cobalt Strike 4.0 і пізніших версіях діяльність після експлуатації та бічного руху обходиться без стадійних пристроїв і використовує повне корисне навантаження, де це можливо. При відключенні постановки корисного навантаження не варто цього помічати, будучи готовим до постексплуатації.

DNS-маяк

DNS Beacon є улюбленою функцією Cobalt Strike. Це корисне навантаження використовує DNS-запити для зв’язку. Ці DNS-запити є пошуком доменів, для яких ваш C&C-сервер є важливим.

Відповідь DNS повідомляє маяку, що йому потрібно припинити діяльність або зв’язатися з вами для завантаження завдань. Відповідь DNS також повідомляє Beacon, як завантажувати завдання з вашого C&C-сервера.

Малюнок 21. DNS-маяк в дії

У Cobalt Strike 4.0 і пізніших версіях DNS-маяк є корисним навантаженням лише для DNS. У цьому корисному навантаженні немає режиму зв’язку HTTP. Це на відміну від попередніх версій продукту.

Інформаційні канали даних

Сьогодні DNS Beacon може завантажувати завдання через DNS TXT, DNS AAAA або В. Це корисне навантаження може перемикатися між цими каналами даних, поки вона знаходиться в цілі. Використовуйте команду mode, щоб змінити поточний канал даних.  Mode dns є каналом передачі даних A-запису.  Режим роботи DNS6 запис каналу AAAA.  А  режим dns-txt –  це канал заданої  запису TXT. За замовчуванням використовується канал даних запису TXT.

Майте на увазі, що DNS-маяк не зареєстрований, поки не буде доступна робота.  Використовуйте  команду реєстрації, щоб подати запит на реєстрацію DNS-маяка під час наступного доступу до сервера.

Настройка DNS Listener’а

Щоб створити обробник маяка DNS, виберіть Cobalt Strike -> у головному меню

Слухачі та натисніть  кнопку Додати  внизу вкладки Слухачі.

Отобразится панель New Listener.

Рисунок 22. Опції DNS Beacon’a

Виберіть Beacon DNS у  полі Корисне навантаження  та встановіть для Слухача поле Ім’я. Обов’язково

дайте новому слухачеві ім’я, що запам’ятовується, оскільки саме так ви будете називати його за допомогою команд Cobalt Strike та робочих процесів.

Параметри

DNS Hosts  – Натисніть [+], щоб додати один або кілька  доменів для маяка. Ваш C&-C-сервер Cobalt Strike повинен бути авторитетним для вказаних вами доменів.  Створіть запис DNS A та перешліть його на командний сервер Cobalt Strike. Використовуйте записи NS, щоб делегувати кілька доменів або субдоменів запису C&C A.

Список хостів маяка обмежений символами 255. Він включає довільно призначений URI для кожного хоста та роздільник між кожним елементом списку. Якщо довжина перевищена, хости будуть відкинуті з кінця списку, поки він не впишеться у відведений простір. Повідомлення про відкинуті хости відображатимуться в журналах сервера C&C

Стратегія обертання  хостів Це значення налаштовує поведінку маяків при виборі хоста (хостів) зі списку для використання при встановленні з’єднання.  Виберіть один із наведених нижче параметрів.

Кругова область: виберіть, щоб округлити список імен хостів у порядку, у якому вони відображаються. Кожен хост використовується для одного підключення.

random: виберіть, щоб випадковим чином вибирати ім’я хоста зі списку щоразу, коли ви намагаєтеся підключитися.

failover-xx: Виберіть використовувати робочий хост якомога довше. Використовуйте кожен хост у списку, поки вони не досягнуть кількості послідовних невдач (x) або періоду часу (m, h, d), а потім використовуйте наступний хост.

rotate-xx:  виберіть, щоб використовувати кожен хост протягом певного періоду часу. Використовуйте кожен вузол у списку протягом вказаної тривалості (m,h,d), а потім використовуйте наступний хост.

Max Retry Stategy налаштовує поведінку маяків для виходу після декількох послідовних невдалих спроб підключення до C&C сервера. Є кілька варіантів за замовчуванням або ви можете створити свій власний список за допомогою  функції LISTENER_MAX_RETRY_ STRATEGIES.

немає: виберіть, щоб запобігти вимкненню маяка через невдалі спроби підключення.

exit-xxx: ці параметри використовують синтаксис exit-[maximum_attempts]- [спроби_to_increase]-[тривалість][m,h,e].   maximum_attempts – кількість послідовних невдалих спроб, після яких Beacon вийде.  Attempts_to_increase – це кількість послідовних невдалих спроб до збільшення часу сну.  Тривалість – це кількість хвилин, годин або днів для нової тривалості сну.

Час сну не оновлюватиметься, якщо поточний час сну більший за нове встановлене значення. На час сну впливає поточне значення тремтіння. При будь-якому успішному підключенні лічильник невдалих спроб скидається до нуля, а час сну повертається до попереднього значення.

DNS Host (Stager)  тут налаштовується стагенер записів DNS TXT Beacon. Цей стайдеж використовується лише з функціями Cobalt Strike, які цього вимагають. Ваш C&C-сервер повинен бути авторитетним для цього домену.

Профіль Дозволяє налаштувати маяк за допомогою профілю Malleable C2.

DNS-порт (прив’язка)  Це поле визначає порт, до якого буде прив’язаний ваш DNS-сервер маяка. Цей параметр корисний, якщо потрібно настроїти переспрямовувач, який змінює порт, наприклад, переспрямовувач, який приймає з’єднання на порту 53, але спрямовує їх на сервер C&C через інший порт.

DNS Resolver – дає змогу розпізнавати службу DNS за допомогою певного  засобу розпізнавання імен DNS замість засобу розпізнавання імен DNS за замовчуванням для цільового сервера.    Вкажіть IP-адресу потрібного резольвера, цей DNS-резольвер не використовується стажем DNS маяка.

Перевіряти

Щоб перевірити  конфігурацію DNS, відкрийте термінал і введіть nslookup jibberish.beacon domain. Якщо ви отримуєте відповідь у вигляді запису A 0.0.0.0, значить, ваш DNS налаштований правильно. Якщо ви не отримали відповіді, це означає, що ваша конфігурація DNS неправильна, і DNS-маяк не зв’язується з вами.

Нотатки

  1. Переконайтеся, що записи DNS посилаються на основну адресу мережевого інтерфейсу. DNS-сервер завжди надсилатиме відповіді з основної адреси вашого мережевого інтерфейсу. Розпізнавачі DNS зазвичай скидають відповіді, коли запитують інформацію з одного сервера та отримують відповідь від іншого.

  2. Якщо ви використовуєте пристрій NAT, переконайтеся, що ви використовуєте свою загальнодоступну IP-адресу для запису DNS-сервера, і налаштуйте брандмауер на перенаправлення трафіку UDP через порт 53 у вашу систему. Cobalt Strike включає DNS-сервер для управління маяком

  3. Щоб налаштувати індикатори мережевого трафіку для ваших маяків DNS.

HTTP-маяк і маяк HTTPS

Маяки HTTP і HTTPS завантажують завдання за допомогою запиту HTTP GET. Маяки даних надсилають дані назад за допомогою запиту HTTP POST. Це параметр за замовчуванням. Ви маєте вражаючий контроль над поведінкою та показниками цього корисного навантаження з Malleable C2.

Настройка HTTP(S) Listener’а

Щоб створити  HTTP-обробник або маяк HTTPS, виберіть Cobalt Strike -> Listeners у головному меню та натисніть  кнопку Додати  внизу екрана вкладки Слухачі.

Відкриється панель New Listener.

Малюнок 19. Параметри маяка   HTTP

Виберіть  Beacon HTTP або Beacon HTTPS у  полі Корисне навантаження  та встановіть Слухач із  полем Ім’я. Обов’язково дайте новому слухачу ім’я, що запам’ятовується, оскільки це ім’я ви будете використовувати для його вирішення за допомогою команд Cobalt Strike та робочих процесів.

Параметри

Хости HTTPS(S)  – Натисніть [+], щоб додати один або кілька хостів для доступу за допомогою маяка HTTP. Натисніть [-], щоб видалити один або  кілька хостів. Натисніть [X], щоб очистити поточні хости. Якщо у вас кілька хостів, ви можете вставити в це вікно список хостів, розділених комами.

Довжина списку хостів маяка обмежена символами 255. Він включає довільно призначений URI для кожного хоста та роздільник між кожним елементом списку. Якщо довжина перевищена, хости будуть відкинуті з кінця списку, поки вони не помістяться у відведений простір. Повідомлення про відкинуті хости відображатимуться в журналах сервера C&C.

Стратегія обертання  хостів Це значення налаштовує поведінку маяків при виборі хоста (хостів) зі списку для використання при встановленні з’єднання.  Виберіть один із наведених нижче параметрів.

Кругова область: виберіть, щоб округлити список імен хостів у порядку, у якому вони відображаються. Кожен хост використовується для одного підключення.

random: виберіть, щоб випадковим чином вибирати ім’я хоста зі списку щоразу, коли ви намагаєтеся підключитися.

failover-xx: Виберіть використовувати робочий хост якомога довше. Використовуйте кожен хост у списку, поки вони не досягнуть кількості послідовних невдач (x) або періоду часу (m, h, d), а потім використовуйте наступний хост.

rotate-xx:  виберіть, щоб використовувати кожен хост протягом певного періоду часу. Використовуйте кожен вузол у списку протягом вказаної тривалості (m,h,d), а потім використовуйте наступний хост.

Max Retry Stategy налаштовує поведінку маяків для виходу після декількох послідовних невдалих спроб підключення до C&C сервера. Є кілька варіантів за замовчуванням або ви можете створити свій власний список за допомогою  функції LISTENER_MAX_RETRY_ STRATEGIES.

немає: виберіть, щоб запобігти вимкненню маяка через невдалі спроби підключення.

exit-xxx: ці параметри використовують синтаксис exit-[maximum_attempts]- [спроби_to_increase]-[тривалість][m,h,e].   maximum_attempts – кількість послідовних невдалих спроб, після яких Beacon вийде.  Attempts_to_increase – це кількість послідовних невдалих спроб до збільшення часу сну.  Тривалість – це кількість хвилин, годин або днів для нової тривалості сну. Час сну не оновлюватиметься, якщо поточний час сну більший за нове встановлене значення. На час сну впливає поточне значення тремтіння. При будь-якому вдалому підключенні лічильник невдалих спроб обнуляється, а час сну повертається до попереднього значення.

HTTP Host (Stager) –  Цей параметр управляє хостом стаджера HTTP для маяка HTTP. Це значення використовується лише в тому випадку, якщо ви поєднуєте це корисне навантаження з атакою, яка вимагає явного стажера.

Профіль у цьому полі вказано варіант податливого профілю C2. Варіація – це спосіб  вказати кілька варіантів профілю в одному файлі. Для варіантів кожен настроюваний обробник HTTP або HTTPS може мати різні мережеві індикатори.

HTTP-порт (C2) Це поле вказує порт, до якого маяк HTTP отримає доступ.

HTTP Port (Bind)  – Це поле визначає  порт, до якого буде прив’язаний ваш веб-сервер HTTP Beacon. Цей параметр корисний, якщо потрібно настроїти переспрямовувач, який змінює порт (наприклад, переспрямовувач, який приймає підключення на портах 80 або 443, але спрямовує їх до команди сервер на іншому порту).

Заголовок хоста  HTTP Якщо це значення вказано, воно передається  вашим стажерам HTTP та через ваші зв’язки HTTP. Цей параметр полегшує використання переваг фронтації домену за допомогою Cobalt Strike.

HTTP Proxy Натисніть кнопку …  , щоб вказати конкретну конфігурацію проксі-сервера для цього корисного навантаження.

Ручне налаштування проксі-сервера HTTP 

Діалогове вікно «Параметри проксі-сервера вручну» пропонує кілька параметрів керування конфігурацією проксі-сервера для запитів HTTP та HTTPS Beacon. Поведінка маяка за замовчуванням полягає у використанні конфігурації проксі-сервера Internet Explorer для поточного контексту процесу/користувача.

Малюнок 20.  Посібник із настроювання проксі-сервера

У полі Тип  налаштовано тип проксі-сервера. Поля «Хост» і «Порт» повідомляють маяку, де розташовано проксі-сервер. Поля  Ім’я користувача та Пароль необов’язкові. У цих полях визначаються облікові дані, які Beacon використовує для автентифікації на проксі-сервері.   

Виберіть Ігнорувати параметри проксі-сервера; використовуйте пряме підключення, щоб змусити маяк спробувати запити HTTP та HTTPS, не проходячи через проксі-сервер.

Натисніть  кнопку “Встановити“, щоб оновити діалогове вікно “Маяк” з потрібними параметрами  проксі-сервера. Натисніть кнопку Скинути, щоб повернути конфігурацію проксі-сервера до поведінки за замовчуванням.

ПРИМІТКА. Налаштування проксі-сервера вручну впливає лише на етап маяка HTTP та HTTPS. Це не стосується стагенів.

Перенаправлення

Переспрямування – це система, яка розташована між мережею вашої цілі та вашим командним сервером. Будь-які підключення, які надходять до переспрямовувача, пересилаються на ваш сервер C&C для обробки. Переспрямування – це спосіб надати доступ до вашого маяка кільком хостам. Переспрямування також покращує безпеку, оскільки ускладнює відстеження справжнього місцезнаходження вашого C&C-сервера.

Елементи керування Lestener Cobalt Strike підтримують використання переадресацій. Просто вкажіть своїх переспрямовувачів під час налаштування HTTP Listener або HTTPS Beacon.

Cobalt Strike не перевіряє цю інформацію. Якщо вказаний хост не пов’язаний з поточним хостом, Cobalt Strike вважає, що це переспрямовувач. Одним з простих способів перетворити сервер в редиреквізит є використання socat. Ось синтаксис socat для перенаправлення всіх з’єднань на порту  80 на сервер C&C на 192.168.12.100 на порт 80:

socat TCP4-LISTEN:80,вилка TCP4:192.168.12.100:80

Маяк SMB

SMB Beacon використовує іменовані труби для зв’язку через батьківський маяк. Це однорангове спілкування працює з маяками на одному хості. Він також працює через мережу. Windows інкапсулює іменований конвеєрний зв’язок у протоколі блоку серверних повідомлень (SMB). Звідси і назва – SMB Beacon.

Налаштування обробника SMB

Щоб створити маяк SMB, виберіть Cobalt Strike -> Listeners у головному меню та натисніть  кнопку Додати  внизу екрана вкладки Слухачі.

Откроется панель New Listener.

Рисунок 23. Маяк SMB

Виберіть Beacon SMB у  полі Корисне навантаження  та встановіть поле Name на Слухач.  Обов’язково дайте  новому слухачеві ім’я, що запам’ятовується, оскільки це ім’я ви будете використовувати для звернення до нього за допомогою команд Cobalt Strike та робочих процесів.

Єдиним параметром, пов’язаним з SMB Beacon, є Pipename (C2). Ви можете вказати конкретну іменовану трубу або прийняти параметр за замовчуванням. SMB Beacon сумісний з більшістю дій Cobalt Strike, які породжуються Вантажопідйомність. Виняток становлять атаки, керовані користувачами, для яких потрібні явні інсценісти.

Дії після експлуатації та бічного переміщення Cobalt Strike, які генерують корисне навантаження, намагатимуться взяти під контроль (зв’язок) маяк SMB за вас. Якщо ви запускаєте маяк SMB вручну, вам потрібно буде пов’язати його з батьківським маяком.

Підключення та відключення

У консолі Beacon використовуйте  команду link, щоб зв’язати поточний маяк з  маяком SMB, який слухає з’єднання. Коли поточний маяк реєструється, пов’язані з ним маяки також реєструються.

Для злиття зі звичайним трафіком зв’язані маяки використовують іменовані канали Windows для зв’язку. Цей трафік інкапсульований у протоколі SMB. При такому підході є кілька застережень:

  1. Хости з SMB Beacon повинні приймати з’єднання на порту 445.

  2. Ви можете зв’язати лише маяки, які контролюються тим самим екземпляром Cobalt Strike.

Якщо ви отримуєте помилку 5 (доступ заборонено) після спроби зв’язати маяк: Викрадіть маркер користувача домену або скористайтеся  make_token паролем DOMAIN\USER, щоб заповнити поточний маркер дійсними обліковими даними для цілі. Спробуйте зв’язати маяк ще раз.

Щоб зруйнувати з’єднання з маяком, використовуйте від’єднання [ip] [PID сеансу] в батьківському або дочірньому маяку.  Аргумент [session PID] – це ідентифікатор процесу Beacon, який потрібно відключити.  Це значення дозволяє вказати конкретний маяк для відключення при наявності декількох дочірніх маяків.

Коли ви відключаєте маяк SMB, він не відключається та не видаляється. Замість цього він входить в стан, в якому чекає з’єднання від іншого маяка. Ви можете використовувати команду link, щоб відновити контроль над маяком SMB з іншого маяка пізніше.

 Приховане спілкування  «Маяка-рівному»

Важко залишитися непоміченим, коли багато скомпрометованих систем виходять в Інтернет. Використовуйте спілкування «рівний-рівному» для вирішення цієї проблеми. Ця функція дозволяє пов’язувати маяки один з одним. Пов’язані маяки завантажують завдання та надсилають результати через свій батьківський маяк.

Використовуйте режим smb, щоб перетворити маяк на одноранговий вузол, який чекає підключення іншого маяка.

Використовуйте link [ip-адреса], щоб пов’язати поточний маяк з вузлом, який  очікує з’єднання. Коли поточний маяк зареєструється, його пов’язаний з ним маяк також зареєструється. Для злиття зі звичайним трафіком для зв’язку використовуються підключені маяки.

Канали SMB. При такому підході є кілька застережень:

  1. Однорангові хости маяка повинні приймати з’єднання на порту 445.

  2. Ви можете зв’язати лише маяки, які контролюються тим самим екземпляром Cobalt Strike.

Якщо ви отримуєте помилку 5 (доступ заборонено) при спробі зв’язати  маяк: викрадіть маркер користувача домену або використовуйте оболонку net use \\host /U:DOMAIN\user password, щоб встановити сеанс з хостом. Для цього не потрібен адміністратор. Підійде будь-який існуючий користувач домену. Після налаштування сеансу спробуйте підключитися до маяка знову.

Щоб знищити з’єднання з  маяком, використовуйте  команду unlink [ip-адреса] в батьківському або дочірньому маяку.   Пізніше ви можете знову  зв’язати від’єднаний маяк (або зв’язати його з іншим маяком).

Як тільки маяк стає одноранговим, неможливо змусити його знову передавати дані через HTTP або DNS. Якщо ви хочете знищити одноранговий маяк, використовуйте команду exit. Якщо ви хочете, щоб маяк передавав дані через HTTP або DNS, попросіть одноранговий маяк надати вам інший сеанс маяка.

Одноранговий маяк як корисне навантаження

Деякі системи не можуть встановити зв’язок з Інтернетом. У таких випадках добре мати спосіб доставити маяк плагіна, щоб ви могли підключитися до нього.  Використовуйте  [host] -> Вхід -> psexec або [хост]  -> Вхід   –  > psexec  (psh) з маяком (підключення до цілі)  Слухач.  Це дозволить вам запустити одноранговий маяк на  хості без необхідності підключення до Інтернету для постановки.

Ви також можете налаштувати слухач на доставку однорангового маяка. Створіть обробник для windows/beacon_smb/reverse_tcp. Цей слухач сформує ваш одноранговий маяк. Після встановлення вам все одно потрібно буде зв’язати його з іншим маяком.

Якщо постановка займає багато часу, ви можете попросити Cobalt Strike експортувати повністю готовий одноранговий маяк як виконуваний файл, DLL, сценарій PowerShell або необроблений блок шелкоду. Перейдіть до Payloads -> Windows Stageless Payload і виберіть SMB Beacon.

Маяк TCP

TCP-маяк використовує гніздо TCP для обміну даними через батьківський маяк. Цей одноранговий зв’язок працює з маяками на одному хості або через мережу.

Налаштування TCP Listener

Щоб створити обробник маяка TCP, виберіть Cobalt Strike -> Listeners у головному меню та натисніть  кнопку Додати  внизу екрана вкладки Слухачі.

Відкриється панель New Listener.

Рисунок 24. Маяк TCP

Виберіть Beacon TCP у  полі Корисне навантаження  та встановіть поле Name для слухача.  Обов’язково дайте новому слухачеві ім’я, що запам’ятовується, оскільки це ім’я ви будете використовувати для звернення до нього за допомогою команд Cobalt Strike та робочих процесів.

Конфігурований таким чином маяк TCP є зв’язуючим корисним навантаженням. Прив’язка корисного навантаження – це корисне навантаження, яке чекає з’єднання від свого компонента управління (в даному випадку ще один сеанс маяка).

Параметри

Порт (C2)  – цей параметр управляє портом, на якому TCP-маяк буде прослуховувати з’єднання.

Прив’язка лише до localhost – Встановіть для прив’язки маяка TCP до 127.0.0.1, коли він прослуховує з’єднання. Це хороший варіант, якщо ви використовуєте TCP Beacon для діяльності лише localhost.

TCP Beacon сумісний з більшістю операцій Cobalt Strike, які генерують корисне навантаження.  Виняток становлять, як і у випадку з SMB Beacon, атаки, керовані користувачами, які вимагають явних етаперів.

Після операції та бічний рух Cobalt Strike, який чекає корисного навантаження, спробує взяти під контроль (підключитися) до маяка SMB за вас. Якщо запустити TCP-маяк вручну, потрібно буде підключитися до нього з батьківського маяка.

Підключення та відключення

У консолі маяка використовуйте команду  connect [ip-адреса] [порт], щоб підключити  поточний сеанс до маяка TCP, який очікує з’єднання.   Коли відбувається поточний сеанс зареєструється, пов’язані з ним маяки також зареєструються. Щоб знищити з’єднання з  маяком, використовуйте команду unlink [ip-адреса] [PID-сеансв консолі батьківського або дочірнього сеансу.  Пізніше ви можете повторно підключитися до маяка TCP з того самого хоста (або іншого хоста).

Зовнішній C2

Зовнішній C2 – це концепція, яка дозволяє стороннім програмам виступати в якості комунікаційного рівня для корисного навантаження Cobalt Strike.  Ці сторонні програми підключаються до Cobalt Strike для зчитування призначених для них даних і запису даних з результатами корисного навантаження, які управляються аналогічним чином.

Зовнішній сервер C2 – це те, що ці програми сторонніх виробників використовують для зв’язку з вашим командним сервером Cobalt Strike.

Налаштування зовнішнього слухача C2

Щоб створити Listener Beacon’а Зовнішнього C2, виберітьCobalt Strike -> Слухачі

у головному меню та натисніть  кнопку Додати  внизу екрана вкладки Слухачі.

Откроется панель New Listener.

Перейдіть до Cobalt Strike -> Listeners, натисніть кнопку Додати та виберіть External C2 як корисне навантаження.

Малюнок 25.  Зовнішній C2

Виберіть Зовнішній C2 у  полі Корисне навантаження  та встановіть поле Ім’я для слухача.  Обов’язково дайте  новому слухачеві ім’я, що запам’ятовується, оскільки це ім’я ви будете використовувати для звернення до нього за допомогою команд Cobalt Strike та робочих процесів.

Порт (Bind) – Вкажіть порт, на якому зовнішній сервер C2 прослуховує з’єднання.

Прив’язатися тільки до localhost  – встановіть зовнішній сервер C2 тільки локальним.

ПРИМІТКА. Зовнішні  слухачі C2  не схожі на інших слухачів Cobalt Strike.  Ви не можете націлити їх  на післяопераційні  дії Cobalt Strike. У цій опції є тільки можливість налаштувати сам інтерфейс.

Специфікація

Зовнішній інтерфейс C2 описано у специфікації External C2.

  1. Зовнішня специфікація C2

  2. extc2example.c

Якщо ви хочете адаптувати приклад (Додаток B) зі специфікації для використання в сторонньому сторонньому C2, ви можете використовувати ліцензію  3-clause BSD для коду, що міститься в специфікації.

Сторонні матеріали

Ось список сторонніх проектів і публікацій, які посилаються, використовують або будують на зовнішній C2:

  1. Custom Command and Control (C3) від F-Secure Labs. Фреймворк для швидкого створення прототипів пользовательских каналов C2.

  2. external_c2_framework Джонатана Ечаваррії. Фреймворк Python для створення зовнішніх C2-клієнтів і серверів.

  3. ExternalC2 Library від Ryan Hanson Бібліотека .NET с Web APi, WebSockets і пряма розетка. Включає модульні тести та коментарі.

  1. Завдання Office 365 для Cobalt Strike C2 від MWR Labs. Обсуждение и демонстрація

Office 365 C2 для Cobalt Strike.

  1. Спільний файл C2 від Outflank BV. POC для використання файлу/спільного ресурсу для керування та контролю.

Сторонні слухачі

Cobalt Strike підтримує концепцію сторонніх слухачів. Це псевдоніми для  обробників   корисного навантаження x86, розміщених у фреймворку Metasploit або інших екземплярах Cobalt Strike. Щоб передати сеанс Windows HTTPS Meterpreter іншому користувачеві за допомогою msfconsole, налаштуйте корисне навантаження Foreign HTTPS і вкажіть значення Host і Port відповідному обробнику. Ви можете використовувати сторонніх слухачів скрізь, де ви використовуєте Cobalt Strike’s x86 Listener.

Налаштування стороннього слухача

Щоб створити сторонній обробник маяків, виберіть Cobalt Strike -> Listeners і натисніть  кнопку Додати  внизу екрана вкладки Слухачі.

Відкриється панель New Listener.

Сторонний HTTP

Виберіть  Foreign HTTP або Foreign HTTPS в  полі Payload і встановіть для Listener’y поле Name.   Обов’язково дайте новому слухачеві ім’я, що запам’ятовується, оскільки це ім’я ви будете використовувати для звернення до нього за допомогою команд Cobalt Strike та робочих процесів.

Параметри

  • HTTP(S) Host (Stager)  – Це поле вказує ім’я сервера, на якому знаходиться ваш сторонній слухач.

  • HTTP(S) Port (Stager) – Це поле визначає порт сервера, на якому ваш сторонній слухач слухає з’єднання.

Консолідація інфраструктури

Модель Cobalt Strike для розподілених операцій передбачає створення  окремого C&C сервера для кожного етапу вашої роботи. Наприклад, має сенс відокремити інфраструктуру для постоперації і консолідації. Якщо ви знайдете  – Є післяопераційні заходи, і ви не хочете зворотних дзвінків, які дозволять вам повернутися в Інтернет, коли ви відновите свою інфраструктуру.

Деякі етапи операції вимагають використання декількох редиректів і каналів зв’язку. Cobalt Strike 4.0 дружньо ставиться до цього.

Малюнок 26.  Особливості інтеграції інфраструктури

Ви можете прив’язати кілька слухачів HTTP, HTTPS та DNS до одного C&C-сервера Cobalt Strike. Корисне навантаження також підтримує прив’язку портів у своїй конфігурації. Це дозволяє використовувати загальний порт для вашого каналу (80,443 або 53) в on- redirect та конструкції C2, але прив’язуйте цих Слухачів до різних портів, щоб уникнути конфлікти портів на вашому C&C сервері.

Щоб урізноманітнити мережеві показники, податливі профілі C2 Cobalt Strike можуть містити кілька варіантів. Варіант — це спосіб додавання різних версій поточного профілю до одного файлу профілю. Ви можете вказати параметр профілю під час визначення кожного обробника HTTP або маяка HTTPS.

Крім того, ви можете визначити кілька маяків TCP та SMB на одному командному сервері, кожен з яких має різні конфігурації каналів та портів. Будь-який вихідний маяк з того самого сервера C&C може керувати будь-яким маяком TCP або SMB після його розгортання в цільовому середовищі.

Особливості безпеки корисного навантаження

Cobalt Strike вживає заходів для захисту зв’язку маяків та забезпечення того, щоб Beacons могли отримувати завдання лише від свого C&C сервера та надсилати йому результати.

Коли ви налаштовуєте Beacon вперше, Cobalt Strike генерує пару публічних / приватних ключів, яка є унікальною для вашого C&C-сервера. Відкритий ключ C&C сервера вбудований в корисне навантаження стадії Beacon. Beacon використовує відкритий ключ C&C сервера для шифрування метаданих сеансу, які він надсилає на сервер C&C.

Маяк завжди повинен надсилати метадані сеансу, перш ніж сервер C&C зможе видавати завдання та отримувати результати сеансу маяка. Ці метадані містять випадковий ключ сеансу, згенерований цим маяком. C&C-сервер використовує ключ сеансу кожного маяка для шифрування завдань та розшифровки результатів.

Кожна реалізація маяка і каналу передачі даних використовує одну і ту ж схему. Ви маєте таку ж безпеку при використанні каналу даних A-запису в гібридному маяку HTTP і DNS, як і при використанні маяка HTTPS.

Зверніть увагу, що все вищезазначене стосується маяка після його розміщення. Завдяки своїм розмірам стайдери корисного навантаження не мають вбудованих функцій безпеки.

Дякуємо різним посібникам, які знаходяться у різних відкритих джерелах.

Інші статті по темі
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.