Генерация 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).
Если всё ок, в меню сверху появится новая вкладка "CrossC2".
Генерация beacon и подключение
Для генерации beacon’ов вам потребуется файл .cobaltstrike.beacon_keys с сервера. Его можно найти в директории, где у вас лежат все серверные файлы. И если сервер удаленный, то требуется скачать его к себе на машину.
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, таким образом, что там появляются полезные хайлайты.
[*] 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
[*] 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 не предусмотренных стандартным функционалом данного решения.