Cobalt Strike unlimited trial

Продлеваем срок службы Cobalt Strike

Metasploit Framework хорошая штука для проведения пентестов и различных экспериментов. Как и следовало ожидать, под данный фреймворк были разработаны графические интерфейсы для облегчения управления. Существует два основных ГУЯ:

Если первый просто является дополнением к MSF и бесплатен, то второй несколько расширяет функционал метасплоита и содержит несколько дополнительных эксплоитов под Java и MS Office и MS Excel.

Готовые пакеты в Cobalt Strike
CobaltStrike WebDrive-by

Кроме этого, имеется поддержка командной работы. Кобальт в отличии от Армитажа стоит денег, причем хороших. Стоимость годовой лицензии составляет 2,500$ К счастью доступна триал-версия продукта обеспечивающая работу в течении 21 дня. Для скачивания триала придется вооружиться US ип адресом. Нацепляем прокси/vpn и качаем файлы по вкусу, я взял под Win и Linux, дело в том, что в архиве под линукс присутствует файл teamserver необходимый для легкого запуска кобальта на удаленном сервере, что бывает необходимо при отсутствии у себя белого IP или совместной с кем-либо работы.

Распаковав полученный архив и запустив CS (java -jar cobaltstrike.jar), видим ограничение:

Cobalt strike trial

Что ж, приступим к устранению всплывающего окна и продолжительности жизни триала. JAR файл представляет из себя простой ZIP архив, который мы и распакуем. Проделав это можно видеть примерно такие файлы:

Распакованый кобальт

Проведя поиск по файлам, необходимая строка “This is a trial” была найдена только в одном файле с говорящим названием: “license.sl” в папке “scripts“. Внутри файла содержится скрипт проверки лицензии.

sub checkLicense {
	local('$today $start $left $form $life $difference');
	$today = ticks();
	$start = long([$preferences getProperty: "cobaltstrike.start.int", ""]);
	$life  = 21;
        ...
        ...
        if ($difference > $life || ($today - $start) < 0) {
            [JOptionPane showMessageDialog: $frame, "Your Cobalt Strike trial is now expired.\nPlease purchase a license and use the\nsoftware update feature to continue.\n\nFor details, visit:\nhttp://www.advancedpentest.com/"];
            [System exit: 0];
        }
        ...
        ...
}

Как не сложно догадаться переменная $life содержит период жизни триальной версии, в случае, если время жизни истекло происходит [System exit: 0];

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

sub checkLicense {

}

Сохранив и заменив файл в JAR архиве с помощью любого архиватора поддерживающего ZIP, мы убрали проверку лицензии, теперь при запуске кобальта не будет надоедливого сообщения, а софт будет работать неограниченный срок. Минусы конечно есть, мы лишились обновлений и поддержки, но зато сэкономили две с половиной тысячи долларов.