Conti Ransomware malware leak WITH LOCKER
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

76 lines
4.1 KiB

КРИПТЕР
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
Нужно написать криптер - программу, содержащую в себе нагрузку в виде ПРОИЗВОЛЬНЫХ .exe или .dll, маскирующую и запускающую ее.
Термин "Стаб" - это холостая оболочка криптера без нагрузки.
ТРЕБОВАНИЯ
1. Сборка в обе разрядности (32/64); нагрузка той же разрядности что и стаб.
2. Если нагрузка - .dll, она запускается БЕЗ CreateProcess. Путем развертывания в памяти текущего процесса, настройки reloc'ов, импорта/экспорта, и вызова точки входа.
3. Если нагрузка - .exe, запуск бесфайловой техникой. Предпочтительно ProcessHollowing.
При этом должна происходить подмена родительского процесса.
4. Стаб должен маскировать нагрузку:
4.1. Добавлять "левый" импорт, мимикрируя (например) под GUI-программу (в обилии вызовы из GDI), или COM-компонент
4.2. Содержать "шумовую" логику: отрисовка окон, вызов COM-объектов, итд. Логика, разумеется, отключена и никогда не срабатывает, но АВ должен думать, что вот-вот и мы закончим инициализацию и тогда
4.3. Можно добавлять ресурсы - левые изображения, текстовые строки итд.
4.4. Нагрузка зашифрована и/или сжата. Можно использовать простейшее XOR-шифрование с длинной гаммой. Алгоритм сжатия - самый легковесный в плане размера и простоты самого алгоритма.
4.5. Нагрузка имеет высокую энтропию, а основная логика - низкую. Следует равномерно распределить нагрузку по разным секциям (.text, .data, .rdata итд).
Таким образом нужно обойти детекты АВ по энтропии.
5. Выполнение требований "оформление кода и сборок"
6. Должны быть профили сборки как под LLVMO, так и под Microsoft C++.
7. Меры по обходу песочниц, задержки запуска нагрузки, на первом этапе опциональны.
На втором этапе они станут обязательными.
Режим использования криптера предполагает генерацию сотен файлов с разными хэшами в день.
У всех этих файлов должны быть РАЗНЫЕ шумовые строки, ресурсы, если получится - маскирующая логика.
То есть требуется высокий и АВТОМАТИЗИРОВАННЫЙ уровень полиморфизма.
То есть, всю эту рандомизацию предлагается внести в систему сборки (в виде событий сборки или билдера).
ОФОРМЛЕНИЕ СБОРКИ
Цель всех дальнейших действий - подключение автоматической сборки на билд-машине, с целью выдавать большой объем сборок без участия человека.
За счет объема процент брака на выходе будет иметь меньшее значение (можно будет выбрать 1 из 10 годный крипт).
8. Из сборки должны быть исключены ручные операции.
Все подготовительные, промежуточные и финальные шаги должны быть оформлены как События сборки (правым тапком на проекте в MSVS - События сборки).
Сюда относятся прошивки байт-массивов unsigned char payload[] = {..} из бинарных файлов, кодирование и упаковка нагрузки,
затирание строк в финальном бинарнике, задание имени для финального бинарника, и любые подобные манипуляции.
Билд должен собираться одним действием.
9. Должен иметься скрипт сборки. Например, build.bat (примерный вариант см. в приложении).
Так чтобы можно было сборку включить в автоматизированную систему сборки на билд-машине.
10. Под каждый тип нагрузки должен иметься профиль сборки. Например, Release_Dll_Payload1, Release_Exe_Payload1 для нагрузки 1,
Release_Dll_Payload2, Release_Exe_Payload2 для нагрузки 2 и так далее.
Профиль сборки позволяет задавать независимый набор макросов препроцессора.
Макросами препроцессора можно задать передачу параметров в нагрузку, способ ее развертывания, и прочее.
Подобный подход применяется для систем сборки наподобие CMake.
ПРИЛОЖЕНИЕ 1: СКРИПТ СБОРКИ
echo Build started %DATE% %TIME%
rem НАСТРАИВАЕМ ПУТИ ПОД СЕБЯ
rem ЛОКАЛЬНЫЕ ИЗМЕНЕНИЯ В ЭТОМ ФАЙЛЕ В GIT НЕ КОММИТИТЬ!
set msbuild="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe"
set sln=D:\Projects\project\project.sln
set buildlog=project.log
rem type nul > %buildlog%
echo Build started %DATE% %TIME% > %buildlog%
:buildmain
set buildprofile="Release|Win32"
%msbuild% %sln% /Clean %buildprofile%
%msbuild% %sln% /Build %buildprofile% /Out %buildlog% || goto builderr
:over
echo Build finished successfully %DATE% %TIME%
echo Build finished successfully %DATE% %TIME% >> %buildlog%
exit(0)
:builderr
echo Build %buildprofile% failed %DATE% %TIME%
echo Build %buildprofile% failed %DATE% %TIME% >> %buildlog%
exit(1)