Посібник з CobaltStrike. №6 Управління та контроль за допомогою Malleable’а

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

Посібник з управління та контролю в CobaltStrike

Бажаєте навчитися ефективно використовувати функцію Malleable в CobaltStrike для управління та контролю ваших кібератак? Наш посібник надає детальні вказівки та навчання з використання Malleable для досягнення успішних результатів у кібербезпеці. У посібнику з CobaltStrike ми зосередимося на використанні Malleable – потужної функції, що дозволяє налаштовувати та змінювати характеристики кібератак для досягнення оптимальних результатів. Ви дізнаєтеся, як налаштовувати параметри поведінки атак, перехвату трафіку, взаємодії з цільовими системами та багато іншого з використанням Malleable. Наш посібник пропонує конкретні приклади, пояснення та крок за кроком інструкції, як використовувати Malleable в CobaltStrike.

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

Управління та контроль за допомогою Malleable’а

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

Щоб використовувати власний профіль, необхідно запустити C&C-сервер Cobalt Strike і одночасно вкажіть свій профіль. ./teamserver [зовнішня IP-адреса] [пароль] [/шлях/до/профілю] Ви можете завантажити лише один профіль для кожної копії Cobalt Strike.

Перегляд завантаженого профілю

Щоб переглянути профіль C2, завантажений під час  запуску C&C-сервера, клацніть Довідка   -> Гнучкий профіль C2. Якщо ви підключаєте кілька  серверів C&C, відобразиться профіль поточного сервера C&C. Це діалогове вікно доступне лише для читання.

Щоб закрити діалогове вікно, скористайтеся кнопкою «x» у верхньому правому куті діалогового вікна.

Перевірка на помилки

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

./c2lint [/шлях/до/профілю]

C2lint повертає та реєструє такі коди результатів для вказаного файлу профілю:

  • Результат 0 повертається, якщо c2lint завершується без помилок

  • Результат 1 повертається, якщо c2lint виходить лише з попередженнями

  • Результат 2 повертається, якщо c2lint тільки не вдається

  • Результат 3 повертається, якщо c2lint аварійно завершує роботу як з помилками, так і з попередженнями

Останні рядки виводу c2lint показують кількість виявлених помилок і попереджень. Якщо помилок не знайдено, повідомлення не відображається. У виводі може бути більше повідомлень про помилки, ніж зазначено в підрахунку, оскільки одна помилка може призвести до кількох повідомлень про помилку. Подібна можливість існує і для попереджень, але вона не настільки значна.

Наприклад:

  • [!] Виявлено 1 попередження.

  • [-] Виявлено 3 помилки.

Мова профілю

Найкращий спосіб створити профіль – змінити існуючий. Кілька прикладів профілів доступні на Github: https://github.com/cobalt-strike/Malleable-C2-Profiles.

Коли ви відкриєте профіль, ви побачите наступне:

# це коментар =)
встановити global_option «значення»;
протокол-транзакція {
встановити local_option «значення»;

клієнт {
# Індивідуальні клієнтські індикатори
}

сервер {
# Налаштовані індикатори сервера
}
}

Коментарі починаються зі знака # і йдуть аж до кінця рядка. Оператор set – це спосіб присвоєння значення параметру. Профілі використовують { фігурні дужки } для групування інструкцій та інформації. Висловлювання завжди закінчуються крапкою з комою.

Щоб все це було зрозуміліше, ось фрагмент профілю:

http-get {
set uri "/foobar"; client {
metadata {
base64;
prepend "user="; header "Cookie";
}
}

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

Клієнтський блок визначає показники для клієнта, який виконує HTTP GET. В даному випадку клієнтом є Beacon Cobalt Strike.

Коли Beacon Cobalt Strike дзвонить додому, він надсилає метадані про себе до Cobalt Strike. У цьому профілі нам потрібно визначити, як ці метадані будуть закодовані та надіслані з нашим запитом HTTP GET.

Ключове слово метаданих, за яким слідує група інструкцій, визначає, як трансформувати та вбудувати метадані в наш запит HTTP GET. Група операторів, яка слідує за ключовим словом метаданих, називається перетворенням даних.

Перше твердження в нашому перетворенні даних вказує, що ми перетворимо метадані в кодування base64 [1]. Друга інструкція prepend приймає наші закодовані метадані та додає до них рядок  user= [2]. Тепер наші перетворені метадані мають форму “user=”. base64(метадані). Третя інструкція визначає, що ми будемо зберігати наші перетворені метадані в клієнтському HTTP-заголовку під назвою Cookie [3] . Це воно.

І Beacon, і його сервер використовують профілі. В даному випадку ми розглянули профіль з точки зору клієнта Beacon. Сервер Beacon візьме ту саму інформацію та інтерпретує її у зворотному порядку. Скажімо, наш веб-сервер Cobalt Strike отримує запит GET до /foobar URI. Тепер він хоче витягти метадані з транзакції.

Заголовок повідомить нашому серверу, де взяти перетворені метадані [1]. HTTP-сервер подбає про парсинг заголовків з HTTP-клієнта для нас. Далі нам потрібно розібратися з підготовчою інструкцією. Щоб відновити перетворені дані, ми інтерпретуємо prepend як видалення перших символів  X [2], де X – довжина вихідного рядка, який ми додали. Залишиться тільки інтерпретувати останню інструкцію – base64. Раніше ми використовували функцію кодування base64 для зміни метаданих. Тепер ми використовуємо base64 decode для відновлення метаданих [3].

Ми отримаємо вихідні метадані після того, як інтерпретатор профілю завершить виконання кожного з цих зворотних тверджень.

Мова перетворення даних

Перетворення даних – це послідовність інструкцій, які перетворюють і передають дані. Інструкції з перетворення даних такі:

Перетворення даних – це комбінація будь-якої кількості цих інструкцій в будь-якому порядку. Наприклад, ви можете вибрати перетворення netbios для передачі даних, додавання деякої інформації, а потім перетворення всього вмісту в base64.

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

Є чотири інструкції щодо завершення.

Оператор завершення заголовка зберігає перетворені дані в заголовку HTTP. Оператор завершення параметра зберігає перетворені дані в параметрі HTTP. Цей параметр завжди надсилається як частина URI. Виписка друку надсилає перетворені дані в тіло операції.

Оператор print є стандартною інструкцією завершення для блоків http- get.server.output, http-post.server.output і http-stager.server.output. Для інших блоків ви можете використовувати заголовок, параметр, друк та заяву про завершення uri-append.

Якщо ви використовуєте заголовок, параметр або звіт про завершення додавання uri в http-post.client.output, маяк розділить свої відповіді на шматки прийнятної довжини, щоб вони вписувалися в цю частину транзакції. Ці блоки і дані, які вони надсилають, описані в наступному розділі.

Лінія

Мова профілю Beacon дозволяє використовувати рядки в декількох місцях. В цілому рядки інтерпретуються як зазвичай. Однак є кілька спеціальних значень, які можна використовувати в рядку:

Заголовки і параметри

Перетворення даних є важливою частиною процесу налаштування індикаторів. Індикатори дозволяють налаштувати дані, які Маяк повинен надсилати або отримувати з кожною транзакцією. Ви також можете додавати сторонні індикатори до кожної транзакції.

У запиті HTTP GET або POST ці сторонні індикатори поставляються у вигляді заголовків або параметрів. Використовуйте оператор параметра в клієнтському блоці для додавання довільного параметра в транзакцію HTTP GET або POST.

Цей код призведе до того, що маяк додасть ?bar=blah до URI /foobar, коли він зробить запит.

http-get {
client {
parameter "bar" "blah";

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

http-get {
server {
header "X-Not-Malware" "I promise!";

Інтерпретатор профілю інтерпретує ваші заголовки та параметри по порядку. Однак бібліотека WinINet (клієнт) і веб-сервер Cobalt Strike мають остаточне рішення про те, де ці індикатори будуть відображатися в транзакції.

Параметри

Ви можете налаштувати параметри маяка за замовчуванням через файл профілю. Існує два типи параметрів: глобальні і локальні. Глобальні налаштування змінюють глобальні налаштування маяка. Локальний залежить від конкретної транзакції. Необхідно задати локальні параметри у відповідному контексті. Використовуйте оператор set, щоб встановити параметр.

set "sleeptime" "1000";

Ось кілька параметрів:

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

Навіть якщо параметр useragent існує, можна використовувати інструкцію header, щоб змінити цей параметр. Додаткові зауваження щодо параметрів “task_”

Параметри tasks_max_size, tasks_proxy_max_size та tasks_dns_proxy_max_size працюють разом, щоб створити буфер даних, який буде переданий до маяка при реєстрації. Коли маяк реєструється, він запитує список завдань та даних проксі-сервера, які готові до передачі цьому маяку та його дітям. Буфер даних починає заповнюватися

завдання (завдання), а потім дані проксі для батьківського маяка. Потім цей процес триває для кожного дочірнього маяка, доки більше не будуть доступні завдання чи дані проксі-сервера або поки розмір tasks_max_size не буде перевищено наступним завданням або даними проксі-сервера.

tasks_max_size контролює максимальний розмір у байтах буфера даних, заповненого завданнями та проксі-даними, які можуть передаватися на маяк через DNS, HTTP, HTTPS та однорангові канали зв’язку. У більшості випадків значення за замовчуванням підходять, але в деяких випадках настроюване завдання перевищує максимальний розмір і не може бути надіслане. Наприклад, ви використовуєте команду execute-assembly з виконуваним файлом розміром більше 1 МБ, а в консолі C&C і Beacon відображається таке повідомлення:

[C&C консоль]

Відмова від завдання для 40147050! Розмір завдання 1389584 байтів перевищує максимальний розмір завдання в 1048576 байти.

[Консоль маяка]

Розмір завдання 1389584 байтів перевищує максимальний розмір завдання в 1048576 байти.

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

Практичні поради:

  1. Визначте найбільший розмір завдання, яке буде відправлено на маяк. Це можна зробити шляхом тестування та пошуку повідомлення вище, або шляхом вивчення власних об’єктів (виконуваних файлів, бібліотек dll тощо), які використовуються у ваших збірках. Як тільки це буде визначено, додайте до значення додатковий вільний простір. Використовуючи інформацію з наведеного вище прикладу, встановіть розмір tasks_max_size 1572864 (1,5 МБ).Пробіл необхідний, тому що менше завдання може слідувати за більшим, щоб прочитати відповідь.

  2. Коли значення tasks_max_size визначено, оновіть параметр task_max_size у своєму профілі, запустіть сервер C&C та створіть артефакти маяка для розгортання у ваших цільових системах.

  3. Якщо ваша інфраструктура вимагає, щоб маяки, створені іншими C&-C-серверами, з’єднувалися один з одним через однорангові канали зв’язку, то цей параметр слід оновити на всіх C&-C серверах. В іншому випадку маяк проігнорує запит, коли він перевищує встановлений розмір.

  4. Якщо використовується зовнішній C2 Listener, потрібно оновити, щоб підтримувати розмір tasks_max_size, більший за 1 МБ за замовчуванням.

Якщо ви виконуєте велику роботу, не ставте її в чергу з іншими завданнями, особливо якщо вона працює на маяку, який використовує однорангові канали зв’язку (SMB та TCP), оскільки це може бути затримано кількома реєстраціями залежно від кількості завдань, які вже стоять у черзі, та даних проксі-сервера для надсилання. Причина в тому, що коли ви додаєте завдання, воно має розмір X байтів, що зменшує загальний доступний простір для додавання більшої кількості завдань. Крім того, проксі-сервер даних через Beacon також зменшує кількість місця, доступного для надсилання великого завдання. Коли завдання відкладається, в консолі C&C і Beacon відображається наступне повідомлення:

[C&C консоль]

Шматування завдань на 123! Не вдається додати завдання 787984 байтів, оскільки воно перевищує доступний розмір 260486 байтів. 2 завдання призупинено до наступної реєстрації.

[Консоль маяка]

Не вдається додати завдання 787984 байтів, оскільки воно перевищує доступний розмір 260486 байтів. 2 завдання призупинено до наступної реєстрації.

Параметри tasks_dns_proxy_max_size (канал DNS) і tasks_proxy_max_size (інші канали) визначають розмір даних проксі в байтах, які будуть відправлені на маяк. Обидва параметри повинні бути менше параметра tasks_max_size. Ми рекомендуємо не змінювати ці налаштування, оскільки розміри за замовчуванням в порядку. Ці налаштування працюють так: при додаванні даних проксі в буфер даних для батьківського маяка використовується значення каналів proxy_max_size мінус поточна довжина завдання, яка може мати як позитивне, так і негативне значення. Якщо це позитивне значення, дані проксі будуть додані до цього значення. Якщо це від’ємне значення, то дані проксі будуть пропущені для цієї реєстрації. Для дитячого маяка розмір proxy_max_size тимчасово зменшується виходячи з наявного буферного простору даних, що залишився після обробки батьківського та попереднього дочірніх маяків.

Постановка HTTP

Маяк – це покрокове корисне навантаження. Це означає, що корисне навантаження завантажується стагером і вставляється в пам’ять. Ваші індикатори http-get і http-post не набудуть чинності, поки маяк не опиниться в пам’яті вашого об’єкта. Блок http-stager в Malleable C2 налаштовує процес постановки HTTP.

http-stager {
set uri_x86 "/get32.gif"; set uri_x64 "/get64.gif";

Параметр uri_x86 вказує URI для завантаження корисного навантаження x86 ступеня. Параметр uri_x64 визначає URI

для завантаження корисного навантаження ступеня x64.

client {
parameter "id" "1234";
header "Cookie" "Какое-то значение";
}

Ключове слово клієнта, в контексті http-stager, ідентифікує клієнтську сторону транзакції HTTP. Використовуйте ключове слово параметра, щоб додати параметр до URI. Використовуйте ключове слово header, щоб додати заголовок до запиту HTTP GET стайдера.

server {
header "Content-Type" "image/gif"; output {
prepend "GIF89a"; 
print;

Ключове слово server, в контексті http-stager, визначає серверну сторону транзакції HTTP. Ключове слово header додає заголовок сервера до відповіді. Вихідне ключове слово, в контексті http-stager сервера, являє собою перетворення даних для зміни корисного навантаження етапу. Це перетворення може додавати рядки лише на початок або кінець етапу. Скористайтеся інструкцією про завершення друку, щоб закрити цей блок виводу.

Опис транзакції Beacon HTTP

Щоб зібрати все це разом, вам потрібно знати, як виглядає транзакція Beacon і які дані надсилаються з кожним запитом. Транзакція починається, коли Beacon робить запит HTTP GET на веб-сервер Cobalt Strike. У цей час Маяк повинен надіслати метадані, що містять інформацію про скомпрометовану систему.

Веб-сервер Cobalt Strike відповідає на HTTP GET завданнями, які повинен виконувати маяк. Спочатку ці завдання відправляються у вигляді одного зашифрованого двійкового блоку. Ви можете перетворити цю інформацію за допомогою вихідного ключового шару в контексті сервера http-get.

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

Запит HTTP POST повинен містити ідентифікатор сеансу в параметрі або заголовку URI. Cobalt Strike використовує цю інформацію для зв’язування виводу з бажаним сеансом. Вміст, який спочатку публікується, є зашифрованим двійковим блоком. Ви можете трансформувати цю інформацію, використовуючи вихідне ключове слово в контексті клієнта http-post.

Веб-сервер Cobalt Strike може відповісти на HTTP POST чим завгодно. Компанія «Маяк» не приймає та не використовує цю інформацію. Ви можете вказати вихід HTTP POST за допомогою вихідного блоку в контексті сервера http-post.

ПРИМІТКА: Незважаючи на те, що http-get за замовчуванням використовує GET, а http-post за замовчуванняню використовує POST, ви не обмежуєтеся цими параметрами. Використовуйте параметр verb, щоб змінити ці значення за промовчанням. Гнучкість тут дуже велика.

У цій таблиці зведено ці ключові слова та дані, які вони передають:

Конфігурація HTTP-сервера

Блок http-config впливає на всі HTTP-відповіді, надіслані веб-сервером Cobalt Strike.

Тут можна вказати додаткові заголовки HTTP і порядок заголовків HTTP.

http-config {
set headers "Date, Server, Content-Length, Keep-Alive, Connection, Content-Type";
header "Server" "Apache";
header "Keep-Alive" "timeout=5, max=100"; header "Connection" "Keep-Alive”;
set trust_x_forwarded_for "true";
set block_useragents "curl*,lynx*,wget*";
}

set  headers – цей параметр визначає порядок доставки цих HTTP-заголовків до Відповідь HTTP. Будь-які заголовки, не включені в цей список, додаються в кінець.

header – Це ключове слово додає значення заголовка до кожної відповіді Cobalt Strike HTTP. Якщо у відповіді вже визначено значення заголовка, це значення ігнорується.

встановити trust_x_forwarded_for  – Цей параметр визначає, чи буде Cobalt Strike використовувати HTTP-заголовок X-Forwarded-For для визначення адреси віддаленого запиту. Використовуйте цей параметр, якщо ваш сервер CobaltStrike знаходиться за переспрямовувачем HTTP.

block_useragents і  allow_useragents – Ці параметри налаштовують список призначених для користувача агентів користувача, які блокуються або дозволяються при отриманні відповіді 404. За замовчуванням блокуються всі запити від користувальницьких агентів, починаючи з curl, lynx або wget. Якщо вказано обидва параметри, block_useragents матиме пріоритет над allow_useragents  . Значення параметра підтримує рядок значень, розділених комами. Значення підтримують прості дженерики:

Самоподпісанние сертифікати SSL з SSL Beacon

HTTPS Beacon використовує індикатори HTTP Beacon у своєму спілкуванні. Гнучкі профілі C2 також можуть вказувати параметри для самопідписаного SSL-сертифіката сервера C2 Beacon. Це корисно, якщо ви хочете відтворити агент з унікальними індикаторами в його сертифікаті SSL:

https-certificate {
set CN	"bobsmalware.com"; set O	"Bob’s Malware";
}

Настройки сертифіката, якими керує профіль:

Дійсні сертифікати SSL з маяком SSL

https-certificate {
set keystore "domain.store"; set password "пароль";
}

У вас є можливість використовувати дійсний сертифікат SSL з Beacon. Використовуйте профіль Malleable C2, щоб вказати файл сховища ключів Java та пароль для сховища ключів. Це сховище ключів має містити закритий ключ вашого сертифіката, кореневий сертифікат, усі проміжні сертифікати та сертифікат домену, наданий вашим постачальником сертифікатів SSL. CobaltStrike очікує знайти файл сховища ключів Java в тій же папці, що і ваш профіль MalleableC2.

Параметри використання дійсного SSL сертифіката:

Нижче наведено кроки для створення дійсного сертифіката SSL для використання з Маяк:

  1. Використовуйте програму keytool для створення файлу сховища ключів Java. Ця програма задасть питання «Яке ваше ім’я та прізвище?». Переконайтеся, що ви відповідаєте за допомогою FQDN сервера вашого маяка. Крім того, не забудьте записати пароль сховища ключів. Він знадобиться пізніше.

$ keytool -genkey -keyalg RSA -keysize 2048 -keystore domain.store

  1. Використовуйте keytool для створення запиту на підписання сертифіката (CSR). Цей файл буде надіслано постачальнику сертифіката SSL. Вони перевірять, що ви є тим, ким ви є і вам буде видано сертифікат. З деякими постачальниками працювати простіше і дешевше, ніж з іншими.

$ keytool -certreq -keyalg RSA -файл домену.csr -магазин ключів domain.store

  1. Імпортуйте кореневі та проміжні сертифікати, надані постачальником послуг SSL.

$ keytool -import -trustcacerts -alias FILE -file FILE.crt – keystore domain.store

  1. Нарешті, потрібно встановити сертифікат домену.

$ keytool -import -trustcacerts -alias mykey -file domain.crt – keystore domain.store

Це воно. Тепер у вас є файл сховища ключів Java, готовий до використання з Маяк.

Параметри профілю

Гнучкі файли профілів C2 за замовчуванням містять один профіль. Ви можете упакувати варіанти поточного профілю, вказавши блоки варіантів для http-get, http-post, http-stager та https-certificate.

Блок варіантів вказується як  [ім’я блоку] “ім’я варіанту” { … }. Ось варіант блоку http-get з іменем “My Variant”:

http-get "Мой вариант" { client {
parameter "bar" "blah";

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

Параметри можна вибрати при налаштуванні HTTP Listener або HTTPS Beacon. Варіанти дозволяють кожному слухачу маяка HTTP або HTTPS, прив’язаному до одного сервера C &, мати мережеві МОК, які відрізняються один від одного.

Сертифікат розробника

Корисні навантаження ->  Windows Stager Payload і Windows Stageless Payload дають  можливість   підписати виконуваний файл або бібліотеку DLL. Щоб скористатися цією опцією, необхідно вказати файл сховища ключів Java із сертифікатом розробника та закритим ключем. Cobalt Strike очікує знайти файл сховища ключів Java в тій же папці, що і ваш профіль Malleable C2.

code-signer {
set keystore "keystore.jks"; set password "password"; set alias	"server";
}

Нижче наведено параметри сертифіката розробника.

DNS маяки

У вас є можливість змінити DNS-трафік маяка/слухача за допомогою Податливий С2.

dns-beacon “optional-variant-name” {
# Параметры перенесены в группу 'dns-beacon' в 4.3:
set dns_idle	"1.2.3.4";
set dns_max_txt	"199";
set dns_sleep	"1";
set dns_ttl	"5";
set maxdns	"200";
set dns_stager_prepend	"doc-stg-prepend"; set dns_stager_subhost	"doc-stg-sh.";
# Параметры переопределения подхостов DNS добавлены в 4.3:
set beacon	"doc.bc.";
set get_A	"doc.1a.";
set get_AAAA	"doc.4a.";
set get_TXT	"doc.tx.";
set put_metadata	"doc.md.";
set put_output	"doc.po.";
set ns_response	"zero";
}

Налаштування наступні:

Ви можете використовувати “ns_response”, коли DNS-сервер відповідає на запити цільової аудиторії помилками “Помилка сервера”. Публічний засіб розпізнавання імен DNS може ініціювати запити для записів DNS, які DNS-сервер на командному сервері Cobalt Strike відхиляє за замовчуванням.

Застереження при роботі з Malleable C2

Гнучкий C2 дає вам новий рівень контролю над вашою мережею та індикаторами хоста. З цією владою приходить відповідальність. Податливий C2 – це також можливість зробити багато помилок. Нижче наведено кілька речей, про які слід пам’ятати під час створення профілів.

  • Кожен екземпляр Cobalt Strike використовує один профіль за раз. Якщо ви зміните свій профіль або завантажите новий, раніше розгорнуті Маяки не зможуть взаємодіяти з вами.

  • Завжди стежте за станом своїх даних і за тим, що дозволяє протокол, коли ви виконуєте їх перетворення. Наприклад, якщо перетворити метадані на base64 і зберегти їх у параметрі URI, це не спрацює. Чому? Деякі символи base64 (+, = і /) мають особливе значення в URI. Інструмент c2lint та компілятор профілів не виявляють таких типів проблем.

  • Завжди перевіряйте свої профілі, навіть після невеликих змін. Якщо Beacon не може зв’язатися з вами, можливо, виникла проблема з вашим профілем. Відредагуйте його та повторіть спробу.

  • Довіряйте інструменту c2lint. Цей інструмент перевершує можливості профільного компілятора. Перевірки базуються на тому, як реалізована технологія. Якщо перевірка за допомогою c2lint не вдається, це означає, що у вашому профілі є серйозна проблема.

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

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