Initial Access
February 29

Генерация 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.<Linux/MacOS/Win> - beacon генератор для вашей рабочей ОС (далее по тексту будем использовать genCrossC2.Linux).

Распаковываем 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.

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

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

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

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

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

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

  • Первым делом создаем https-слушатель.
  • В появившемся окне заполняем ip-адреса и порт.
  • Теперь с помощью генератора приступаем к созданию beacon-нагрузки. Параметры:
genCrossC2 <listener-ip/domain> <listener-port> <beacon_keys> <rebind_library;config.ini;c2profile.profile> <target_platform> <target_arch> <filename>
  • Доставляем данный файл на машину жертвы и запускаем. Если всё успешно, то в интерфейсе Cobalt Strike появится новое подключение.

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

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

Pivoting

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

ElevateKit

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

CrossC2 Kit

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

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

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

Если же перейти в интерактивный режим (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 не предусмотренных стандартным функционалом данного решения.