Посібник з Cobalt Strike. №4 Пост-експлуатація, прихований Beacon

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

Посібник з Cobalt Strike для пост-експлуатації та прихованого Beacon

Хочете дізнатися про потужні можливості пост-експлуатації та використання прихованого Beacon в Cobalt Strike? Наш посібник надає детальне навчання та практичні вказівки для ефективного використання цих функцій в цьому фреймворку. У нашому посібнику з Cobalt Strike ми зосередимося на пост-експлуатації – фазі, яка настає після успішного проникнення в цільову систему. Ви дізнаєтеся, як використовувати різні методи і техніки для збору інформації, розширення привілеїв, створення постійного доступу та забезпечення тривалої присутності в системі. Особлива увага буде приділена прихованому Beacon – механізму, що дозволяє створювати незамітний та невиявний зв’язок зі зловмисником. Ми розглянемо різні методи встановлення та управління Beacon, а також засоби для його приховування від антивірусних програм та систем виявлення інтра-мережевих загроз.

 

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

Пост-эксплуатація

Прихований Beacon

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

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

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

Консоль Beacon

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

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

Малюнок 33.  Консоль Beacon

Між входом і виходом консолі Beacon знаходиться рядок стану. Цей рядок стану містить відомості про поточний сеанс. У стандартній конфігурації рядок стану показує ім’я NetBIOS цілі, ім’я користувача та PID поточного сеансу, а також час останньої реєстрації маяка.

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

Швидше за все, більшу частину часу ви проведете з Cobalt Strike в консолі Beacon. Варто витратити час на ознайомлення з його командами. Введіть help у консолі Beacon, щоб побачити доступні команди. Введіть help і назву команди для отримання докладної довідки.

Меню Beacon’а

Клацніть правою кнопкою миші на маяку або всередині його консолі, щоб відкрити меню

Маяк. Це те ж меню, яке використовується для відкриття його консолі.

Доступні такі елементи:

Меню Access  містить параметри для маніпулювання довірчими зв’язками та підвищення рівня доступу.

Меню «Огляд» містить параметри для отримання інформації та взаємодії з мішенева система.

У  меню Pivoting ви можете налаштувати інструменти для тунелювання трафіку через Маяк.

У  меню Сеанс  ви можете керувати поточним сеансом маяка.

Малюнок 34. Маякове меню

Деякі візуальні представлення Cobalt Strike (зведений графік і таблиця сеансів) дозволяють вибрати кілька маяків одночасно. Більшість дій, що виконуються через це меню, застосовуються до всіх вибраних сеансів маяка.

Асинхронні та інтерактивні операції

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

За замовчуванням маяки реєструються кожні шістдесят  секунд. Ви можете змінити це за допомогою команди сну. Використовуйте команду сну, а потім час у секундах, щоб вказати, як часто слід реєструвати маяк. Ви також можете вказати друге число від 0 до 99. Це число і є коефіцієнтом тремтіння. Маяк змінюватиме час кожної реєстрації на випадковий коефіцієнт, який ви вказуєте як коефіцієнт тремтіння. Наприклад,  сон 300 20 змусить маяк спати протягом 300 секунд з частотою тремтіння 20%. Це означає, що маяк буде спати випадкове значення від 240 до 300 секунд після кожної реєстрації.

Щоб зробити регістр маяка кілька разів на секунду, спробуйте використовувати sleep 0. Це інтерактивний режим. У цьому режимі команди будуть виконані негайно. Ви повинні зробити свій маяк інтерактивним перед тунеляцією трафіку через нього. Кілька команд маяка (наприклад, browserpivot, desktop тощо) автоматично перенесуть маяк в Інтернет під час наступної реєстрації.

Виконання команд

Команда оболонки  наказує Beacon виконати команду через cmd.exe на скомпрометованому хості. Коли команда буде завершена, Beacon надасть вам вихід. Використовуйте  команду «Виконати», щоб запустити команду  без cmd.exe. Команда run дасть вам  результат. Команда execute  запускає програму у фоновому режимі і не захоплює вихід.

Використовуйте команду powershell, щоб запустити команду за допомогою PowerShell на зламаному хості. Використовуйте  команду powerpick, щоб запустити командлет PowerShell без powershell.exe. Ця команда заснована на методі Unmanaged PowerShell, розробленому Лі Крістенсеном. Команди powershell і powerpick використовуватимуть ваш поточний токен.   Команда psinject  введе Unmanaged PowerShell у певний процес і запустить ваш командлет із цього місця.

Команда  powershell-import імпортує сценарій PowerShell в Beacon. Наступного разу, коли вони використовуватимуть командлети powershell, powerpick і psinject, вони матимуть доступ до командлетів з імпортованого сценарію. Одночасно в маяку зберігатиметься лише один сценарій PowerShell. Імпортуйте порожній файл, щоб видалити імпортований сценарій з маяка.

Команда  execute-assembly запустить локальний виконуваний файл .NET як завдання маяка для постпродакшну. Ви можете передавати аргументи цій збірці так, ніби вона працює з Windows CLI. Ця команда також успадковує ваш поточний токен.

Якщо ви хочете, щоб Beacon виконував команди з певного каталогу, використовуйте команду  cd  у консолі Beacon, щоб переключити робочий каталог для процесу Beacon. Команда pwd  повідомить вам, з якого каталогу ви зараз працюєте. Команда setenv  встановлює змінну середовища.

Beacon може виконувати об’єктні файли маяка без створення нового процесу. Об’єктні файли Beacon – це скомпільовані програми на С, написані відповідно до певної конвенції, які виконуються як частина сеансу Beacon. Використання inline-execute [  аргументи] для виконання об’єктного файлу Beacon із заданими аргументами.

Перенесення сеансу

Маяк Cobalt Strike спочатку був створений як надійний рятувальний круг для підтримки доступу до скомпрометованого хоста. З першого дня головною метою Beacon було надати доступ іншим слухачам Cobalt Strike.

Використовуйте  команду spawn, щоб створити сеанс для Слухача. Команда spawn приймає архітектуру (наприклад, x86, x64) та Слухач як аргументи.

За замовчуванням команда spawn запускає сеанс на rundll32.exe. Пильному адміністратору може здатися дивним, що rundll32.exe періодично встановлює  з’єднання з інтернетом. Знайдіть більш відповідну програму (наприклад, Internet Explorer) і скористайтеся  командою spawnto, щоб вказати, яку програму Beacon повинен запускати для своїх сеансів.

Команда  spawnto вимагає вказати архітектуру (x86 або x64) і повний шлях до програми, яку ви хочете породити. Введіть команду   spawnto і натисніть клавішу Enter, щоб наказати маяку повернутися до поведінки за замовчуванням.

Введіть  inject, а потім ідентифікатор процесу та ім’я слухача, щоб ввести сеанс у певний процес. Використовуйте ps, щоб отримати список процесів у поточній системі. Використовуйте  inject [pid] x64 для введення 64-бітного маяка в процес x64.

Команди spawn і inject вводять корисне навантаження етапу в пам’ять. Якщо корисне навантаження сцени – це маяк HTTP, HTTPS або DNS, і він не може зв’язатися з вами, ви не побачите сеанс. Якщо корисне навантаження ступеня – це маяк прив’язки TCP або SMB, то ці команди автоматично спробують підключитися до цих корисних навантажень і взяти їх під контроль.

Використовуйте  команду dllinject [pid], щоб ввести відбиваючу бібліотеку DLL у процес.

Використовуйте команду shinject [pid] [arch] [/path/to/file.bin], щоб ввести шелкод-код з локального файлу в цільовий процес. Використовуйте shspawn[arch][/path/to/file.bin], щоб породити процес “spawn to” та ввести вказаний шелкод у цей процес.

Використовуйте dllload [pid] [c:\path\to\file.dll], щоб завантажити бібліотеку DLL з диска в інший процес.

Альтернативні батьківські процеси

Використовуйте  ppid [pid], щоб призначити альтернативний батьківський процес програмам, що запускаються сеансом маяка. Це дозволяє переконатися, що ваша активність зливається із законною діяльністю об’єкта. Поточний сеанс маяка повинен мати відповідні права на альтернативний батьківський процес, і найкраще, якщо альтернативний батьківський процес існує в тому самому сеансі робочого столу, що й ваш маяк. Введіть ppid  без аргументів, щоб Beacon запускав процеси без підробленого батьківського процесу.

Команда runu  виконує команду з іншим процесом як батьківським. Ця команда буде запущена з правами та сеансом робочого столу альтернативного батьківського процесу. Поточний сеанс маяка повинен мати повні права на альтернативний батьківський  процес. Команда spawnu створить тимчасовий процес, який є дочірнім заданого процесу і введе в нього корисне навантаження етапу. Значення spawnto визначає, яка програма використовується як тимчасовий процес.

Підміна аргументів процесу

Кожен маяк має внутрішній список команд, для яких він повинен підставляти аргументи. Коли Beacon виконує команду, яка відповідає списку, він:

  1. Запуск указаного процесу в режимі очікування (з підробленими аргументами)

  2. Оновлює пам’ять процесу реальними аргументами.

  3. Відновлює процес

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

Використовуйте аргументи [команда] [фальшиві аргументи], щоб додати команду до цього внутрішнього списку. Частина [command] може містити змінну середовища. Використовуйте  аргумент, щоб видалити команду з цього внутрішнього списку. Команда argue  перелічує команди в цьому внутрішньому списку.

Логіка збігу процесів точна. Якщо Beacon спробує запустити “net.exe”, він не шукатиме net, NET.EXE або c:\windows\system32\net.exe у своєму внутрішньому списку. Він лише вибере net.exe. x86 Beacon може підробляти аргументи лише в дочірніх процесах x86. Аналогічно, x64 Beacon може підробляти аргументи лише в дочірніх процесах x64.

Справжні аргументи записуються в область пам’яті, де зберігаються підроблені аргументи. Якщо реальні аргументи довші за фальшиві, команда зазнає невдачі

Блокування бібліотек DLL в дочірніх процесах

Використовуйте blockdlls почніть просити Beacon запустити дочірні процеси з політикою двійкового підпису, яка блокує бібліотеки DLL сторонніх виробників (Microsoft) у просторі процесів. Використовуйте blockdlls stop, щоб вимкнути цю поведінку. Для роботи цієї функції потрібна Windows 10.

Передавання та завантаження файлів

download – ця команда завантажує запитуваний файл. Лапки для імені файлу з пробілами вказувати не потрібно. Маяк призначений для “низького та повільного” витоку даних. Під час кожної реєстрації Beacon завантажуватиме фіксований фрагмент кожного файлу, який йому доручено отримати. Розмір цього фрагмента залежить від поточного каналу передачі даних Маяк. Канали HTTP і HTTPS отримують дані в 512 КБ шматків.

downloads – Використовується для перегляду списку завантажуваних файлів для цього маяка.

cancel – Введіть цю команду та ім’я файлу, щоб скасувати завантаження, що триває. У цій команді можна використовувати символи узагальнення, щоб скасувати завантаження кількох файлів.

upload – ця команда завантажує файл на хост.

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

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

Завантажені файли зберігаються на сервері C&C. Щоб перенести файли у вашу систему, виберіть їх і натисніть Синхронізувати файли. Після цього Cobalt Strike завантажить вибрані файли у вибрану папку у вашій системі.

Файловий провідник

Файловий провідник – це можливість перевірити файли в скомпрометованій системі.  Перейдіть до [маяк]  -> Explore -> File Browser, щоб відкрити його.

Також можна запустити  команду file_browser, щоб відкрити вкладку Провідника файлів, починаючи з поточного каталогу.

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

Ліва частина Файлового провідника – це дерево, яке впорядковує відомі диски та папки в єдине подання. У правій частині Файлового провідника відображається вміст поточної папки.

Малюнок 35. Файловий провідник

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

Темно-сіра папка означає, що вміст папки не знаходиться в кеші цього файлового браузера. Клацніть на папці в дереві, щоб Beacon створив перерахування вмісту цієї папки (і оновив кеш). Двічі клацніть по темно-сірій папці в правому вікні перегляду поточної папки, щоб зробити те ж саме.

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

Клацніть правою кнопкою миші файл, щоб завантажити або видалити його. Щоб переглянути, які диски доступні, клацніть List Drives.

Команди файлової системи

Ви також можете використовувати консоль для перегляду та управління файловою системою Маяк.

Використовуйте команду ls  для перегляду списку файлів у поточному  каталозі. Використовуйте команду mkdir  для створення каталогу. Команда rm видаляє файл або папку. Команда cp  копіює файл до місця  призначення. Команда  mv переміщує файл.

Реєстр Windows

Використовуйте reg_query [x86|x64] [Hive\path\to\key], щоб надіслати запит до реєстру для певного розділу. Ця команда відобразить значення цього розділу і список всіх вкладених ключів. Параметр x86/x64 є обов’язковим і змушує Beacon використовувати WOW64 (x86) або власний вигляд реєстру.  reg_query [x86|x64] [Hive\path\to\key] [значення] запитає певне значення в розділі реєстру.

Натискання клавіш і скріншоти

Інструменти журналювання натискання клавіш Beacon та скріншоти розроблені для вбудовування в інший процес та повідомляють про свої результати вашому маяку.

Щоб запустити  кейлоггер, використовуйте кейлоггер pid x86 для введення в процес x86. Використовуйте кейлоггер pid  x64 для введення в процес x64. Використовуйте команду кейлоггера, щоб ввести кейлоггер у тимчасовий процес. Цей інструмент буде відстежувати натискання клавіш із вбудованого процесу та повідомляти про них маяку, доки процес не буде завершено або ви його не завершите

Пам’ятайте, що кілька кейлоггерів можуть конфліктувати один з одним. Використовуйте лише один кейлоггер у кожному з сеансів робочого столу.

Щоб зробити скріншот, використовуйте скріншот pid x86, щоб ввести інструмент знімка екрана в процес x86. Використовуйте команду screenshot pid x64, щоб ввести в процес x64. Ця версія команди screenshot зробить один скріншот і вийде. Команда screenshot реалізує  інструмент знімка екрана в тимчасовому процесі.  

Команда screenwatch  (з опціями використовувати тимчасовий процес або ввести його у відкритий процес) буде безперервно робити скріншоти, поки ви не зупините його.

Використовуйте  команду printscreen  (також з тимчасовими параметрами процесу або вбудовування), щоб зробити скріншот іншим способом. Ця команда використовує натискання клавіші PrintScr, щоб розмістити скріншот у буфері обміну користувача. Ця функція відновлює знімок екрана з буфера обміну та надсилає його вам.

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

Управління роботою Beacon

Деякі функції маяка запускаються як завдання в іншому процесі (наприклад, кейлоггер та інструмент знімка екрана). Ці завдання виконуються у фоновому режимі та повідомляють про свої результати, коли вони стають доступними. Використовуйте команду jobs, щоб побачити, які завдання виконуються у вашому маяку. Використовуйте команду jobkill [номер завдання], щоб завершити завдання.

Провідник процесів

Process Explorer робить очевидну річ: він наказує маяку показати вам список  процесів і відображає цю інформацію для вас. Перейдіть до [маяк]  -> Дослідити -> Показати процеси, щоб відкрити Провідник процесів. Ви також можете запустити  команду process_browser, щоб відкрити вкладку Process Explorer, починаючи з поточного розташування.

Малюнок 36. Провідник процесів

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

У правій частині відображається інформація про процес. Process Explorer також служить зручним інструментом для імітації токена іншого процесу, розгортання інструменту скріншоту або кейлоггера.

Виберіть один або кілька процесів і натисніть відповідну кнопку внизу вкладки.

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

Ця версія Process Explorer є зручним способом розгортання інструментів постпродакшну в декількох системах одночасно.

Просто відсортуйте за назвою процесу, виділіть цікаві процеси в цільових системах і натисніть  кнопку «Знімок екрана» або «Журнал натискань клавіш», щоб розгорнути ці інструменти для всіх вибраних систем.

Настільний елемент керування

Щоб взаємодіяти з робочим столом на цільовому хості, перейдіть до [маяк] -> Огляд -> Робочий стіл (VNC). Це дозволить помістити VNC-сервер в пам’ять поточного процесу і тунелювати  з’єднання через маяк.

Коли сервер VNC буде готовий, Cobalt Strike відкриє  вкладку Desktop HOST@PID. Ви також можете використовувати  команду робочого столу, щоб ввести VNC-сервер у певний процес. Використовуйте настільну архітектуру ПІД низька|висока.  Останній параметр дозволяє вказати якість для сеансу VNC.

Малюнок 37. Інструмент перегляду робочого столу

У нижній частині вкладки робочого столу є кілька кнопок. До них відносяться:

Якщо не вдається ввести текст на вкладці робочого стола, перевірте стан  кнопок Ctrl і  Alt. Коли ви натискаєте будь-яку з цих кнопок, усі клацання надсилаються з модифікатором  Ctrl або Alt. Натисніть кнопку Ctrl або   Alt, щоб вимкнути цю поведінку. Переконайтеся, що  кнопка Тільки перегляд також не натискається. Щоб запобігти випадковому переміщенню миші, за замовчуванням натиснуто кнопку Тільки для перегляду.

Збільшення привілеїв

Для деяких команд після експлуатації потрібні права адміністратора системи. Beacon включає в себе кілька опцій, які допоможуть вам збільшити ваші привілеї, такі як:

Збільшення привілеїв

elevate – Ця команда перелічує експлойти ескалації привілеїв, перераховані Cobalt Strike.

elevate  [експлойт] [слухач] – ця команда намагається підвищити привілеї за допомогою певного експлойту.

Ви також можете запустити один з цих експлойтів за допомогою [маяк]-> Access-> Elevate.

Виберіть Обробник, виберіть експлойт і натисніть Запустити, щоб запустити його. Цей

Діалогове вікно є інтерфейсом до команди elevate.

Ви можете додати експлойти ескалації привілеїв до Cobalt Strike за допомогою комплекту Elevate. Elevate Kit – це сценарій агресора, який інтегрує кілька експлойтів ескалації привілеїв з відкритим вихідним кодом у Cobalt Strike.  https://github.com/rsmudge/ElevateKit.

runasadmin – Ця команда сама перераховує експлойти ескалації привілеїв ліфта, присутні в Cobalt Strike.

runasadmin  [експлойт] [команда + аргументи] ця команда намагається запустити вказану команду в більш привілейованому контексті.

Cobalt Strike розрізняє ліфти експлойтів для ескалації привілеїв і експлойти з сесією, оскільки деякі атаки представляють можливість створити сеанс. Інші атаки надають вам примітивну функцію «виконати цю команду». Породження сесії з примітиву “виконати цю команду” ставить безліч рішень по використанню компонентів (не завжди сприятливих) в руки розробника інструменту.

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

Якщо потрібно використати однорядкову команду PowerShell для створення сеансу, перейдіть до [маяк]  -> Access  -> One-liner.

Рисунок 38. PowerShell One-liner

Це діалогове вікно налаштує веб-сервер лише localhost у сеансі маяка для розміщення корисного навантаження етапу та поверне команду PowerShell для завантаження та запуску цього корисного навантаження.

Цей веб-сервер призначений лише для одноразового використання. Після того, як ви підключитеся до нього один раз, він очиститься і перестане обслуговувати ваше корисне навантаження.

Якщо ви запускаєте TCP або SMB Beacon за допомогою цього інструменту, вам потрібно буде використовувати connect або link для передачі управління корисним навантаженням вручну. Також майте на увазі, що якщо ви спробуєте використовувати корисне навантаження x64, це не спрацює, якщо x86 PowerShell є у вашому $PATH.

Cobalt Strike не має багато вбудованих опцій для збільшення привілеїв. Розробка експлойтів не є основним напрямком роботи HelpSystems. Однак легко інтегрувати експлойти ескалації привілеїв за допомогою мови програмування Aggressor Script в Cobalt Strike. Щоб побачити, як це виглядає, завантажте комплект Elevate Kit (https://github.com/cobalt-strike/ElevateKit ). Elevate Kit – це сценарій агресора, який інтегрує кілька експлойтів розширення привілеїв з відкритим вихідним кодом у Cobalt Strike.

Підвищення привілеїв за допомогою відомих облікових даних

runas [ДОМЕН\  користувач] [пароль] [команда] – виконується команда від імені іншого користувача, який використовує його облікові дані. Команда runas не повертає жодних результатів. Ви можете використовувати руни з непривілейованого контексту.

pawnas [ДОМЕН\користувач] [пароль] [слухач]  – Ця команда створює сеанс від імені іншого користувача, використовуючи його облікові дані. Ця команда породжує тимчасовий процес і вводить в нього ваше сценічне корисне навантаження.

Ви також можете перейти до [маяк]  -> Access -> Spawn As, щоб виконати цю команду.

Використовуючи обидві команди, майте на увазі, що облікові дані облікового запису, який не містить SID 500, генеруватимуть корисне навантаження в контексті середньої цілісності. Щоб підняти облікові дані до контексту високої цілісності, потрібно використовувати функцію обходу UAC. Також слід пам’ятати, що виконувати ці команди необхідно з робочої папки, яку може прочитати вказаний обліковий запис.

Отримання рівня SYSTEM

getsystem – ця команда дозволяє видати себе за токен облікового запису SYSTEM.

Цей рівень доступу дозволяє виконувати привілейовані дії, неможливі для користувача Адміністратора.

Ще один спосіб отримати SYSTEM – створити сервіс, який запускає корисне навантаження. Для цього використовується  команда elevate svc-exe [слухач]. Він скине виконуваний файл, який запускає корисне навантаження, створить службу для його запуску, передасть управління корисним навантаженням і очистить службу та виконуваний файл.

Обхід UAC

Microsoft представила службу захисту користувачів (UAC) в Windows Vista і вдосконалила її в Windows 7. UAC працює так само, як sudo в UNIX. Кожен день користувач працює зі звичайними привілеями.

Коли користувачеві потрібно виконати привілейовану дію, система запитує, чи хоче він підвищити свої привілеї.

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

elevate uac-token-duplication [слухач] –   Ця команда породжує тимчасовий процес з підвищеними привілеями і впорскує в нього сценічне корисне навантаження. Ця атака використовує лазівку в UAC, що дозволяє непідвищеному процесу почати довільний процес з токеном, вкраденим з підвищеного процесу. Ця лазівка вимагає, щоб атака видалила кілька прав, призначених бажаному токену. Можливості вашої нової сесії відображатимуть ці обмежені права. Якщо для параметра Завжди сповіщати встановлено максимальне значення, для цієї атаки потрібно, щоб у поточному сеансі робочого стола вже запущено підвищений рівень (від імені того самого користувача). Ця атака працює на Windows 7 і Windows 10 до оновлення від листопада 2018 року.

runasadmin uac-token-duplication [команда] – це та сама атака, описана вище, але ця опція запускає команду за вашим вибором у привілейованому контексті.

runasadmin uac-cmstplua [command] —  ця команда намагається обійти UAC і запустити команду  в привілейованому контексті. Ця атака використовує об’єкт COM, який автоматично підвищує привілеї з певних контекстів процесу (підписаний Microsoft, розташований у c:\windows\*).

Привілеї getprivs – Ця команда дозволяє активувати привілеї, призначені вашому поточному токену доступу.

Мімікац

Маяк інтегрує мімікац. Використання мімікаца [pid] [arch] [модуль::command] <аргументи> вводити в заданий процес для виконання команди мімікац. Використовуйте мімікац (без аргументів [pid] та [arch]), щоб створити тимчасовий процес для виконання команди mimikatz.

Щоб деякі команди працювали, мімікац повинен запускатися як SYSTEM. Прикріпіть символ !  щоб змусити мімікаца піднятися на рівень SYSTEM перед виконанням вашої команди. Наприклад, команда mimikatz !lsa::cache  відновить хеші солоних паролів, кешованих системою. Використовуйте  mimikatz [pid] [arch] [!module::command]<аргументи> або mimikatz [!module::command] <аргументи> (без аргументів [pid] і [arch]).

Час від часу вам може знадобитися запускати команду mimikatz з поточним токеном доступу до маяка. Прикріпіть символ @ до команди, щоб зробити мімікац видавати себе за поточний маркер доступу до маяка. Наприклад, csync mimikatz @lsadump::d запустить команду dcsync у мімікаці з поточним токеном доступу до маяка.

Використовуйте mimikatz [pid] [arch] [@modul::команда] <аргументы> или mimikatz  [@modul::команда] <аргументы> (без аргументов  [pid] и [arch]).

Збирання облікових даних і хешів

Щоб скинути  хеш, перейдіть до [маяк] -> Доступ -> Хеші дампів. Ви також можете  використовувати команду hashdump [pid] [x86|x64] з консолі Beacon, щоб ввести інструмент hashdump у вказаний процес. Використовуйте hashdump (без аргументів [pid] і [  arch]), щоб створити тимчасовий  процес і ввести в нього хешдамп. Ці команди викликатимуть завдання, яке вводиться в LSASS і скидає хеші локальних паролів  користувачів у поточній системі. Для цієї команди потрібні права адміністратора. При введенні в процес PID для цього процесу також потрібні права адміністратора.

Використовуйте logonpasswords [pid] [arch] для введення у вказаний процес скидання облікових даних і хешів NTLM. Використовуйте logonpasswords (без аргументів [pid] і [arch]), щоб створити тимчасовий процес для скидання облікових даних і хешів NTLM. Ця команда використовує mimikatz і вимагає прав адміністратора.

Використовуйте dcsync [pid] [arch] [DOMAIN.fqdn] <ДОМЕН\користувач> щоб ввести в зазначений  процес вилучення хешів NTLM. Використовуйте dcsync [DOMAIN.fqdn] <ДОМЕН\КОРИСТУВАЧ>  щоб створити тимчасовий процес для вилучення хешів NTLM. Ця команда  використовує мімікац для отримання хешів NTLM для користувачів домену з контролера домену. Вкажіть користувача, щоб отримати тільки його хеш. Для цієї команди потрібна довірена особа  зв’язок з адміністратором домену.

Используйте chromedump [pid] [arch] для внедрения в указанный процесс с целью полу- чения учетных данных из Google Chrome. Используйте chromedump (без аргументов [pid] и [arch]) для создания временного процесса с целью получения учетных данных из Google Chrome. Эта команда будет использовать Mimikatz для получения учетныхданных и долж- на выполняться в пользовательском контексте.

Учетные данные, сдампленные с помощью вышеуказанных команд, собираются Cobalt Strike’ом и хранятся в модели данных учетных записей. Перейдите в View -> Credentials, чтобы получить учетные данные текущего командного сервера.

Сканування портів

Beacon має вбудований сканер портів.  Використовуйте portscan [pid] [arch] [targets] [порти] [arp|icmp|none] [max connections], щоб ввести в заданий процес і почати сканування портів вказаних хостів. Використовуйте portscan [цілі] [порти] [arp|icmp|немає] [макс. підключення] (без аргументів [pid] і [arch   ]) для створення   Тимчасовий процес для початку сканування портів вказаних хостів.

Параметр [targets]  – це розділений комами список хостів для сканування. Також можна вказати діапазони адрес IPv4 (наприклад, 192.168.1.128-192.168.2.240, 192.168.1.0/24)

Параметр [ports]  — це список портів для сканування, розділений комами. Можна вказати діапазони (наприклад, 1-65535).

Параметри виявлення цілей [arp|icmp|немає]  визначають, як засіб сканування портів визначатиме, чи існує хост. Параметр ARP використовує ARP для перевірки наявності будь-якої системи за вказаною адресою. Параметр ICMP надсилає запит відлуння ICMP. Параметр none  наказує інструменту сканування портів припустити, що всі хости існують.

Параметр  [max connections]  обмежує кількість спроб одночасного підключення сканера портів. Інструмент портсканування використовує асинхронний ввід/вивід і здатний обробляти велику кількість з’єднань одночасно. При більш високому значенні сканування портів буде набагато швидше. Значення за замовчуванням — 1024.

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

Ви також можете перейти до [маяк]  -> Explore -> Port Scanner, щоб запустити інструмент сканування портів.

Перерахування мереж і хостів

Модуль мережевого маяка надає інструменти для дослідження та виявлення цілей у мережі Windows AD (Active Directory).

Використовуйте net [pid] [arch] [command] [аргументи], щоб ввести інструмент для перерахування мережі та хостів у вказаний процес. Використовуйте  net [command] [аргументи] (без аргументів [pid] і [arch]), щоб створити тимчасовий процес і ввести в нього інструмент для перерахування мережі та хостів. Виняток становить  команда net domain, яка розглядається як домен BOF.net.

Команди в мережевому модулі побудовані поверх Windows Network Enumeration API. Більшість цих команд є прямою заміною для багатьох вбудованих команд net в Windows (також є кілька унікальних функцій).

Доступні такі команди:

  • computers – список хостів в домені (груп)

  • dclist – список контролерів домену. (заповнює модель цілі)

  • domain – відображає домен для даного хоста

  • domain_controllers – список DC (контролера домену) в домені (групи)

  • domain_trusts – список доменних трастів

  • group – список груп і користувачів в групах

  • localgroup –  списки локальних груп і користувачів в локальних групах.  (відмінно підходить для бічного переміщення, коли потрібно знайти, хто є локальним адміністратором в іншій системі)

  • logons – списки користувачів, зареєстрованих на хості;

  • sessions – список сеансів на хості

  • share – список спільних ресурсів на хості

  • користувач – список користувачів та інформація про користувача

  • time – показує час ведучого

  • view – перераховує хости в домені (служба перегляду). (заповнює модель цілі)

Довіра

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

Створіть або згенеруйте маркер, і Windows використає його відомості для автентифікації на мережевому ресурсі.

Используйте  steal_token [pid] или steal_token [pid] <маска доступа  OpenProcessToken>, щоб вкрасти маркер доступу з існуючого процесу.

Якщо ви хочете побачити, які процеси запущені, використовуйте ps. Команда getuid  надрукує ваш поточний токен. Щоб повернутися до вихідного маркера, скористайтеся командою rev2self .

Можливі значення маркера доступу OpenProcessToken:

 Ви можете встановити бажане значення за замовчуванням за допомогою “.steal_token_access_mask” у глобальних налаштуваннях Malleable C2.

Якщо ви знаєте облікові дані користувача, скористайтеся  make_token [ДОМЕН\користувач], щоб створити маркер для передавання цих облікових даних. Цей токен є копією вашого поточного токена зі зміненою реєстраційною інформацією. Він покаже ваше поточне ім’я користувача. Це очікувана поведінка.

Команда  pth [pid] [arch] [ДОМЕН\користувач] [ntlm хеш] вводиться в  заданий процес для створення та видачі себе за токен. Використовуйте pth [ДОМЕН\користувач] [хеш ntlm] (без аргументів [pid] і [arch]), щоб створити тимчасовий процес для створення та видачі себе за маркера. Ця команда використовує мімікац для створення та видачі себе за маркера, який використовує вказаний хеш домену, користувача та NTLM

Діалогове  вікно «Створення маркера» ([маяк]  -> Access -> «Створити токен») є інтерфейсом для цих команд. Він представить вміст моделі облікового запису та за допомогою відповідної команди перетворить обраний обліковий запис у токен доступу.

Квитки на Kerberos

Золотий квиток – це самостійно згенерований квиток Kerberos. Найчастіше Золотий квиток створюється з правами адміністратора домену.

Перейдіть до [маяк]  -> Доступ -> Золотий квиток, щоб підробити золотий квиток з  Cobalt Strike. Надайте наступну інформацію, і Cobalt Strike використає мімікац для генерації квитка та введення його у ваш  лоток kerberos:

  1. Користувач, для якого потрібно підробити квиток.

  2. Домен, для якого ви хочете підробити квиток.

  3. SID домену.

  4. Хеш NTLM користувача krbtgt на контролері домену.

Використовуйте  kerberos_ticket_use [/path/to/ticket], щоб ввести квиток Kerberos у поточний сеанс. Це дозволить Маяку зв’язуватися з віддаленими системами, використовуючи права, зазначені в цьому квитку.

Використовуйте kerberos_ticket_purge, щоб очистити всі квитки kerberos, пов’язані з вашим сеансом.

Бічний рух

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

Введіть  jump, щоб перерахувати параметри бічного переміщення, перелічені в Cobalt Strike. Запустіть стрибок [модуль] [ціль] [слухач], щоб спробувати запустити корисне навантаження на віддалену ціль.

Запустіть  remote-exec, щоб отримати список модулів для віддаленого виконання, включених в Cobalt Strike. Використовуйте remote-exec [модуль] [ціль] [command + аргументи], щоб спробувати виконати вказану команду на віддаленій цілі.

Бічний рух – це область, схожа на ескалацію привілеїв, де деякі атаки представляють набір примітивів для створення сеансу на віддаленій цілі. Деякі напади надають примітивні тільки для страти. Між стрибком і дистанційним виконанням дає вам гнучкість у виборі того, як поставити примітива під охорону тільки для виконання.

Aggressor Script має API для додавання нових модулів для jump і remote-exec. Для отримання додаткової інформації дивіться документацію сценарію агресора (зокрема, розділ про маяк).

Бічний рух за допомогою графічного інтерфейсу

Також Cobalt Strike надає графічний інтерфейс для полегшення бічного зміщення. Перейдіть до візуалізації цілей або перейдіть до Перегляд -> Цілі.  Перейдіть до [target] -> Jump і виберіть потрібний параметр бічного переміщення.

Відкриється таке діалогове вікно:

Малюнок 39. Діалогове вікно «Бічний рух»

Щоб скористатися цим діалоговим вікном:

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

Виберіть облікові дані в шафці облікових даних або заповніть поля Користувач, Пароль і Домен. Beacon використовуватиме цю інформацію для створення маркера доступу для вас. Майте на увазі, що для того, щоб це працювало, ви повинні працювати з контекстом високої цілісності (admin).

Потім виберіть Слухач, який буде використовуватися для бічного руху. SMB Beacon зазвичай є хорошим кандидатом тут.

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

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

Натисніть кнопку Запуск. Cobalt Strike активує вкладку вибраного маяка і дасть йому команди. Інформація про атаку з’явиться в консолі Beacon.

Інші команди

Маяк має ще кілька команд, не описаних вище:

  • Команда   clear очистить список, наданий Beacon. Використовуйте його, якщо допустили помилку.

  • Введіть вихід, щоб попросити маяк вимкнути. Використовуйте kill [pid], щоб завершити процес.

  • Використовуйте timestomp, щоб зіставити час змінення, доступу та створення одного файлу з тими самими параметрами, що й інший.

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

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