Генерация beacon’ов под Linux для Cobalt Strike

Вступление

Cobalt strike — это мощный фреймворк для эксплуатации и пост-эксплуатации, применяемый в проведении тестирований на проникновение и эмуляции хакерских атак.

У данного инструмента есть такие функции, как:

  • Повышение привилегий.

  • Дамп паролей.

  • Сканирование сети.

  • Pivoting.

  • Просмотр файловой системы.

  • И многое другое.

Заражение хостов происходит с помощью так называемых beacon«ов, однако из коробки Cobalt позволяет генерировать нагрузки только для систем с ОС Windows, а в связи с импортозамещением и переходом на ОС семейства Linux возникает потребность в работе именно с такими системами.

В этой статье мы расскажем о дополнении к Cobalt Strike под названием CrossC2 Framework для решения данной задачи.

Данная статья представлена исключительно в образовательных целях. Red Team сообщество «GISCYBERTEAM» не несёт ответственности за любые последствия ее использования третьими лицами.

CrossC2 framework

CrossC2 - фреймворк, включающий в себя генератор beacon«ов для различных систем (Linux, MacOS и т.п.), а также набор скриптов для Cobalt Strike.

Beacon«ы представляют собой запускаемые файлы осуществляющие соединение с С2 сервером.

Скрипты, в свою очередь, позволяют Cobalt Strike работать с такими beacon«ами. Они предоставляют функционал, аналогичный некоторым штатным утилитам (работающим с windows), а также дополнительный, предназначенный только для работы с новыми ОС. Например, для новых соединений с таргетами на ОС Linux вам всё также доступен pivoting посредством SOCKS, файловый браузер и т.п., а также дополнительный функционал, такой как дамп паролей, ssh rootkit, запуск shell-кодов, скриптов и многое другое.

Установка

Сам CrossC2 framework располагается в репозитории по адресу.

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

  • CrossC2-GithubBot-2023–11–20.cna — основной скрипт для работы с новыми beacons.

  • CrossC2Kit-GithubBot-2023–11–20.zip — набор инструментов (проводятся через один скрипт в Cobalt Strike) для новых ОС.

  • genCrossC2. — beacon генератор для вашей рабочей ОС (далее по тексту будем использовать genCrossC2.Linux).

fbdeb6b060b74c5269626e1975f305ff.png

Распаковываем CrossC2Kit-GithubBot-2023–11–20.zip в удобное для вас место.

Далее, если мы хотим пользоваться генератором прямо из интерфейса Cobalt Strike, надо немного настроить CrossC2.cna скрипт (CrossC2-GithubBot-2023–11–20.cna).

В строке, как показано ниже, меняем путь к genCrossC2.Linux.

$genCC2 = "/xxx/xx/xx/genCrossC2.Linux";  # <------— fix

Таким образом, когда вы будете создавать слушатель в Cobalt Strike, он автоматически сгенерирует для него beacon, загрузит его и сгенерированный скрипт на web-сервер в Cobalt Strike и выдаст вам пэйлоад.

Сам пэйлоад получится в виде запуска подтягивающегося через curl-скрипта, в котором прописана загрузка и запуск исполняемого файла beacon.

Но у нас, к сожалению, так и не получилось заставить этот метод работать. Скорее всего по причине того, что даже явно используя функцию создания reverse https слушателя, она почему-то создает bind tcp-слушатель, который в свою очередь, по заявлению авторов, в текущей версии не поддерживается beacon«ами (пока имеем поддержку только https).

Следующим этапом нам необходимо войти в интерфейс Cobalt Strike. В верхнем меню, во вкладке Cobalt Strike, надо открыть Script Manager.

2e640a88c74766c722238b7415acb795.png

В появившемся снизу окне, надо загрузить 3 скрипта:

  • CrossC2-GithubBot-2023–11–20.cna.

  • CrossC2Kit.cna (где находятся распакованные объекты архива CrossC2Kit-GithubBot-2023–11–20.zip).

  • СrossC2Kit_Loader.cna (где находятся распакованные объекты архива CrossC2Kit-GithubBot-2023–11–20.zip).

dbd741c1e2c1d1c06d2aee5af9ad942e.png

Нажимаем кнопку Reload.

Если всё ок, в меню сверху появится новая вкладка »CrossC2».

3d0d5fd74e82e9a8b8b269ecaca169a1.png

Генерация beacon и подключение

Для генерации beacon«ов вам потребуется файл .cobaltstrike.beacon_keys с сервера. Его можно найти в директории, где у вас лежат все серверные файлы. И если сервер удаленный, то требуется скачать его к себе на машину.

9707e1c1ad36ba3bd2711052848b1f8f.pnge21d82092e971c096b9f812b6bd7009e.png

genCrossC2       

d4850593fff38c874c845d321f03d67f.png

  • Доставляем данный файл на машину жертвы и запускаем. Если всё успешно, то в интерфейсе Cobalt Strike появится новое подключение.

fdb98118db68289ea3778045878b6174.png

Использование

По нажатию правой кнопки мыши по beacon появляется меню. Там есть как стандартные функции, так и функции из CrossC2 Kit.

Pivoting

Работает также, как и в стандартной нагрузке Cobalt Strike.

1c7ebff2518e180482dddd1ea40b0ce1.png

ElevateKit

Работать не будет, поддерживается только под операционные системы Windows.

481154f1aded721f04727e078a3adbd2.png

CrossC2 Kit

Основной дополнительный функционал от модуля находится во вкладке CrossC2 Kit.

06190518799a86211ca4658cc31b3021.png

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

d511c9cf135638c0a886b05b49044474.png

И список текущих процессов.

95dbe3db3f8301681ec177000933b9a6.png

Если же перейти в интерактивный режим (interact), у вас откроется специальная ssh-сессия. SSH тут со своей оболочкой и понимает некоторые команды. По большей части, все функции из графического интерфейса — это просто продублированные команды из данного CLI.

Описание доступных команд:

Command                   Description
-------                   -----------
!                         Запустить команду из истории
bash                      CrossC2 Bash Script - Запустить скрипт в памяти
cancel                    Отменить текущую загрузку
cat                       Отобразить содержимое файла
cc2_auth                  CrossC2 auth rootkit - Получить пароль для аутентификации (sshd/sudo/su/passwd...).
cc2_frp                   CrossC2 proxy frp  -  Запустить Linux/MacOS SOCKS5 proxy {TCP/KCP(UDP)}
cc2_iMessage_dump         CrossC2 iMessage dump - дамп сообщений из iMessage.
cc2_inject                CrossC2 inject процесса
cc2_job                   CrossC2 joblist - Управление запущенными задачами
cc2_keychain_dump         CrossC2 Keychain dump (root) - Дамп login username & password из Keychain.
cc2_keylogger             CrossC2 keylogger - Слушать строку, введенную пользователем с клавиатуры.
cc2_mimipenguin           CrossC2 mimipenguin - Дамп login, password с текущего рабочего стола Linux
cc2_prompt_spoof          CrossC2 prompt_spoof - (AppStore) Всплывающий интерфейс предлагает пользователю ввести пароль, похищая введенный пароль
cc2_safari_dump           CrossC2 safari dump - Дамп истории браузера из Safari(default 500).
cc2_script                CrossC2 Script - Запустить скрипт в памяти
cc2_shellcode             CrossC2 Запустить шеллкод
cc2_ssh                   CrossC2 SSH rootkit - Получить пароль ssh для входа в другие целевые объекты.
cd                        Сменить директорию
clear                     Очистить очередь задач
connect                   Подключиться к Beacon peer по TCP
download                  Скачать файл
downloads                 Посмотреть файлы в процессе загрузки
exit                      Завершите этот сеанс
getsystem                 Повысить уровень сеанса с временными правами доступа uid=0 к root-сеансу
head                      Напечатать первые 10 строк файла
help                      Help меню
history                   Показать историю команд
note                      Заметка к сессии
perl                      CrossC2 Perl Script - Запустить Perl скрипт в памяти
php                       CrossC2 PHP Script - Запустить PHP скрипт в памяти
pwd                       Текущая директория
python                    CrossC2 Python Script - Запустить Python скрипт в памяти
python-import             aaa
rportfwd                  Установить обратную переадресации порта
rportfwd_local            Установить обратную переадресации порта через Cobalt Strike client
ruby                      CrossC2 Ruby Script - Запустить Ruby скрипт в памяти
setenv                    Установить переменные виртуального окружения
shell                     Запустить команду в shell
sleep                     Установить время ожидания родительского beacon
socks                     Запуск/остановка сервера SOCKS4a для ретрансляции трафика
spawn                     Создать новую сессию
sudo                      Запустить команду от sudo
tail                      Напечатать последние 10 строк файла
unlink                    отключить дочерний сеанс TCP-beacon
upload                    Загрузить файл

Важно отметить, что помимо всех выше перечисленных команд от скриптов CrossC2 Kit, работают ещё два скрипта: cc2FilesColor.cna и cc2ProcessColor.cna.

Они видоизменяют вывод команд ls и ps, таким образом, что там появляются полезные хайлайты.

ls:

[] Colors scheme:
[] ---------------------------
[] Directories:  YELLOW
[] Cobalt Strike Uploaded Files: BLUE
[] Sensitive files:  RED
[] Configuration files:  DARK GREEN
[] Archives:  ORANGE
[] Source codes:  DARK BLUE
[] Executables:  MAGENTA
[] Documents:  GREEN 

ps:

[] Process List with process highlighting
[] Current Running PID:  Yellow 1250305
[] Explorer/Winlogon:  BLUE
[] Admin Tools:  LIGHT BLUE
[] Browsers:  GREEN
[] AV/EDR:  RED  

Заключение

В данной статье мы рассмотрели замечательный фреймворк CrossC2, который решает проблему подключения к Cobalt Strike хостов с операционными системами на базе Linux и MacOS не предусмотренных стандартным функционалом данного решения.

© Habrahabr.ru