• XSS.stack #1 – первый литературный журнал от юзеров форума

Мануал/Книга Ставим Кобальт на Правильные рельсы

x4k

6767694e 61635361 72656d6d 0a Li-En
КИДАЛА
Регистрация
29.05.2020
Сообщения
292
Реакции
401
Пожалуйста, обратите внимание, что пользователь заблокирован
Появилось немного свободного времени, решил написать про КС, тем более тема многим не дает покоя =) тут уже выкладывал видео о различиях взломанной и модифицированной мной версии. Все очень просто: разработчики кобальта оставили несколько "сюрпризов" для любителей халявы, а именно (в последней версии в частности) они оставили строку X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* в нескольких местах. В этой небольшой заметке я постараюсь рассказать и объяснить как же исправить это безобразие =) Итак поехали!
Yq8WgKs.png


Что значит EICAR и с чем его едят? Строчка из Вики:

EICAR (или EICAR-Test-File — от European Institute for Computer Antivirus Research) — стандартный файл, применяемый для проверки, работает ли антивирус. По сути вирусом не является; будучи запущенным как COM-файл DOS, всего лишь выводит текстовое сообщение и возвращает управление DOS. Программа работает в средах, поддерживающих выполнение 16-битного ПО для DOS, таких как MS-DOS, OS/2, Windows 9x и 32-битные Windows NT. Под 64-битными версиями Windows файл не запускается.

Для начала нам нужен линукс =) Уверен, для винды сущестует огромное количество аналогичных инструментов, но мне о них, к сожалению ничего не известно =) Еще нам нужен bytecode-viewer wget -O /tmp/bv.deb http://kali.download/kali/pool/main/b/bytecode-viewer/bytecode-viewer_2.9.22%2Brepack-0kali1_all.deb && dpkg --force-all -i /tmp/bv.deb && apt-get -f -y install для декомпиляции и удобного просмотра кода. После установки, запускаем coproc sudo bytecode-viewer и настраиваем на нужную волну.

1.png


Именно этот декомпилер мы и будем использовать, почему, сможете узнать сами, протестировав подобным образом другие) Итак, после настройки приложения, открываем терминал в системе, и распаковываем cobaltstrike.jar (это обычный zip архив) в папку /tmp mkdir /tmp/cs ; unzip cobaltstrike.jar -d /tmp/cs/. Хвосты EICAR'а лично я обнаружил в файлах (это касаемо CS4.3) /tmp/cs/common/BaseArtifactUtils.class и /tmp/cs/common/ListenerConfig.class

2.png


Конечно, он есть и в нескольких других местах, но они не имеют никакого значения. BaseArtifactUtils отвечает за генерация исходного кода, т.е. эта строка будет присутствовать во всех Ваших нагрузках, а ListenerConfig соответсвенно за коммуникации между биконом и тимсерверов, т.е. эта строчка в закодированном виде будет присутствовать во всех GET и/или POST запросах (если у вас http(s) бикон) или же в другом трафике между Вами и тестируемой машиной. В первом случае достаточно оставить пробел, либо же написать что-то типа Microsoft Windows Update Standalone Client (ну или же оставить свой номер телефона и домашний адрес, в случае находки потерянного бикона). Во втором ставим перед == знак ! if (this.watermark !== 0) {.

Самое важное: как декомпилировать .class. Итак, File -> New Workspace -> грузим только один файл .class -> File -> Decompile and save all classess... выбираем любой путь, предположим /tmp и на вопрос о декомпилире выбираем Krakatau. Сохраняем, допустим в b1.zip (повторяем и для другого), идем cd /tmp ; unzip b1.zip ; unzip -o b2.zip ; mv /tmp/BCV_Krakatau/common/* /tmp/cs/common/ ; nano /tmp/cs/common/*.java и редактируем как показано выше. После того, как закончили с редактором, компилируем .java обратно в .class javac /tmp/cs/common/*.java , чистим за собой rm /cs/common/*.java и компилируем все обратно в .jar jar cmvf /tmp/cs/META-INF/MANIFEST.MF /tmp/cs.jar /tmp/cs/*

В конечно итоге получаем файл /tmp/cs.jar, чего мы и пытались добиться в начале заметки =) Надеюсь что не зря писал все это, всем спасибо всем удачи))))
ЗЫ: позволю себе продублировать, для тех кто не заметил в той же теме, где видео, скрипт, часто которого изъята на просторах GitHub'a. chmod +x xen.txt ; mv xen.txt /usr/local/bin/xen ; xen ваш_файл.ps1. На выходн получаем павершелл-скрипт с обходом AMSI и выполнением через нагруз процессора, думаю некоторым из Вас будет полезно =)
 

Вложения

  • xen.txt
    22.9 КБ · Просмотры: 113
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован

Об артефактах


В сети гуляют тн artifactkit. Что это такое? Много кто видел, даже распаковывал и комилировал по инструкции от разработчиков. Разработчик(и) кобальта - человек гениальный. на 100%. думаю с юмором у него так же збс) Итак о чем я? Дело в том, что стандартный x86_64-mingw "мало" подходит для решения наших задач . Да, его можно использовать для написания калькуляторов, драйверов для утюга, Pid-контроллера и других нужных вещей. Но нам больше подходит, конечно же llvm или tdm-gcc. Для кланга (x86_64-w64-mingw32-clang и x86_64-w64-mingw32-clang++) видел на просторах гита неплохой обфускатор с одноименным названием. Так же существуюти готовые "конструкторы", например всем известный PEzor (https://github.com/phra/PEzor), но проблема в популярных опенсорс проектах - быстро умирают по понятным причинам. Но дают неплохой заряд креатива, если посмотреть немного глубже в код, а точнее, в данном случае в самое начало)) Клонируем репо, пезор нам поможет быстро установить необходимые инструменты. Устанавливаем. После успешной компиляции кланга, установить второй, упомянутый мной в начале компилер. Для этого устанавливаем wine (apt -y install wine), идем на гит сами, либо используем следующую команду wget -O /opt/tdm64-gcc-9.2.0.exe https://github.com/jmeubank/tdm-gcc/releases/download/v9.2.0-tdm64-1/tdm64-gcc-9.2.0.exe && wine /opt/tdm64-gcc-9.2.0.exe. Устанавливаем тдм-гсс и переходим к главной теме, артефактиту.

total 44K
▕ drwxr-xr-x▏root:root│< day │ 4K│dist-peek
▕ drwxr-xr-x▏root:root│< day │ 4K│dist-pipe
▕ drwxr-xr-x▏root:root│< day │ 4K│dist-readfile
▕ drwxr-xr-x▏root:root│< day │ 4K│dist-template
▕ drwxr-xr-x▏root:root│< day │ 4K│src-common
▕ drwxr-xr-x▏root:root│< day │ 4K│src-main
▕ -rw-r--r--▏root:root│< day │ 2.7K│README.txt
▕ -rwxr-xr-x▏root:root│< day │ 5.3K│build.sh
▕ -rw-r--r--▏root:root│< day │ 2K│script.example


Содержание папки темы разговора состоит из соответственно подпапок с уже компилированными артефактами и двух папок, в одной из которых расположены заголовки и, соответственно main в другой. Не буду рассказывать о модификации исходного кода (лично меня однодневное копание внутри привело к 0-2 деьектам, а этого больше чем), расскажу о самом простом и понятным к чтению тем, кто только делает первые шаги)) способе - смене компилятора и немного оптимизировав аргументы =) Если мы заглянем в файл build.sh, удалим "лишнее" (для удобства я убрад x86), то он будет выглядеть примерно следующим образом:
q6IQ1r1.png


Для начала нам нужно исключить "стрип" из компиляции. Файлы станут немного больше размером, зато это даст Вам возможность для творчества (caveats) ;-) Детект тоже немного снизится. Далее, как я уже и говорил ранее, мы заменим компиллер на установленный нами. Следующий "трюк" нам облегчет задачу, останется только немного поправить вручную. Скопируйте build.sh в clangbuild.sh, например и выполните
❯ sed -i 's+1024+2048+g' clangbuild.sh ; sed -i '/strip/g' clangbuild.sh ; sed -i 's+-gcc+-clang+g' clangbuild.sh ; sed -i 's+-Os+$*+g' clangbuild.sh Должно получится примерно так:

hDQEvhQ.png


То же самое сможете проделать для другого компилера самостоятельно (напомню, wine gcc и wine g++). Далее просто экспериментируем с аргументами, ибо мы "$*" этим указали, что аргументы будем выбипать мы.Материала по-теме,если погуглить - предостаточно, подскажу только несколько)) -O2, -O3, -Os и т.д. - оптимизация кода, -Wl,--strip-all - стрип (мы от него избавились, но на всякий), так же есть флаги -static, - pedantic. Для самых внимательных, в коде есть подсказка, как с помощью командной строки и пары слов избавиться от окна консоли при запуске вашего софта без изобретения велосипеда =) Еще подсказка - прочитайте первую часть статьи еще раз и узнаете, где еще можно "подсмотреть""правильные" аргументы =) В заключении хочу сказать следующее: пишу исключительно с расчетом на простоту восприятия, не углубляясь в подробности, эдакий POC, если хотите, например модные сейчас Direct SysCalls и POC-репозиторий SysWhispers2 сможете осилить самостоятельно (те самые 0-2 детекта ;-)) Так же есть куча материала по теме, гуглите, там "найдется все"))) Ну и делаю я это ради собственного удовольствия, а не рекламы (чего?) или чего-бы там ни было. Так что осваивайте пауэершелл, сипипи и другие немнонятные для меня слова ;-)

PS: Забыла как всегда самое важное =) манипуляции производились в артефактах в исполнении пайп =) удачи)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Пожалуйста, обратите внимание, что пользователь заблокирован
Пожалуйста, обратите внимание, что пользователь заблокирован
Декомпилирую классы по инструкции, изменяю файл и при обратном компилировании постоянно вываливаются ошибки. Как вы их обходили ?
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх