Краткий Обзор Лоадера "Amadey"

lukas

RAM
Пользователь
Регистрация
11.10.2018
Сообщения
133
Оценка реакций
189
Баллы
51
Краткий обзор лоадера «Amadey»


Описание

Проект a2019 «Amadey» изначально разрабатывался под заказ для использования "в одни руки" по очень строгому ТЗ, но в последствии не был выкуплен заказчиком и сейчас доступен к продаже по лицензионному соглашению.
«Amadey» представляет собой резидентную площадку доставки "груза" с минимально необходимым функционалом на борту, никаких сложных приемов при заражении либо коммуникации с панелью, все относительно просто (что есть не плохо, учитывая бдительность к хитро вымученным IPC, современных АВ продуктов). Большинство заявленных автором характеристик продукта были подтверждены.
Дальше все по порядку

заявленные характеристики

● Полная совместимость со всеми версиями Windows семейства NT (тесты на XP и новее, включая 10/2016), 32/64 -
● Имеет полный набор стандартных функций (выбор стран, лимит загрузок и т.д.)
● Имеет контроль загрузки и запуска, повторяет попытку до 3х раз в случае неудачи, рапортует в СС - вы можете видеть в реальном времени статистику задания (Progress), есть ли проблемы с загрузкой или запуском, а так же реальное количество успешно запущеных копий (Success)
● Работа с DLL через rundll32
● Контроль автозагрузки ваших файлов! (а2019 может запускать ваши файлы после ребута ОС или вы можете использовать собственный авторан вашего файла - опционально)
● Автозапуск не из реестра Windows
● Точное определение версии ОС по minor/major и ее разрядности
● Возможность дать персональное задание каждому юниту
● Качественный выход из LOW уровня интеграции
● Определение 12-ти основных антивирусных пакетов (в дальнейшем расширим)
● Мощная статистика без лишней, не нужной "воды"
● Поддержка синхронизации через FastFlux и тому подобные "прокладки"
● Не работоспособен на территории Российской Федерации и братских стран (функционал ограничен отстуком)
● Все внутренние константы под DESом, уникальный ключ шифрования для каждого билда
● СС легок в развертывании, создание таблиц и подключение БД осуществляется из инетрфейса СС
● Размер файла 47 кб.
площадка теста

ранний билд 10ки был выбран не случайно (что-то среднее между 7 кой и 18м билдом 10ки),



пользователь в группе Users (не амдин)



АВ на машине отсутствует (WinDef заглушен)


статика

характеристики предоставленного (не криптованого) 32 bit PE ни чем "характерным" не выделяeтся, файл откомпилирован MinGW с минимальной оптимизацией (что делает реверс чуть менее геморрным) ->



секции с минимальной энтропией и стандартными рутинами EP ->



много подозрительных импортов (статическая эвристика) но это на скантайм «Amadey», никак не влияет





все очь скромно что в данном случае играет на руку данному софту


динамика

1) Установка в систему.

Создает копию в ProgramData/xxxxxx/xxx.exe, где иксы это уникальные для каждого билда значения директории и имени ехе файла.
При копировании используются fread и fwrite, далеее с копии снимается метка Zone.Identifier и происходит запуск функцией CreateProcess




лоадер стартует нормально копирует себя в programdata/ запускает копию но за собой не чистит


a) Проверка уровня интеграции. Происходит без вызова OpenProcessToken/GetTokenInformation/GetSidSubAuthority во избежании детектов. Предпринимается попытка создания файла CreateFile и в случае неудачи IL считается LOW.
честно говоря я не совсем убежден в том что дроп файла на диск (CreateFileA -> WriteFile) является более скрытным методом проверки Integrity Level (учитывая последующую миграцию в programdata) нежели тот же "GetTokenInformation(hToken, TokenElevation". возможно это решение подкреплено тестами и опытом автора. да и тот (0) файл там и остается что в свою очередь создает "надежный" IOC/ИД (индикатор заражения).

При запуске из LOW IL предпринимается попытка синхронизации с соответствующим значением параметра IL, после чего выход из LOW IL через RunAs в цикле.



файл запускаемый из под low/medium по средством ShellExecute(hwnd, "runas" будет рваться в дамки так что выходом из low это сложно назвать скорее шумный выход в High (автору: посмотри в сторону ShellExecuteElevated* как возможная альтернатива).

вот так выглядит "выход из low" «Amadey», всем до боли знакомый наг ->



да и та же функция используется для выполнениe скаченного PE (таск) с директивой запуска из под админа








Переключает Startup директорию Windows на свою

a) Вносит изменения в HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Startup -> ProgramData/xxxxxx/

В меню Start -> All Programs - Startup остаются те программы, которые там были

После чего Windows запускает все, что внутри ProgramData/xxxxxx/
все именно так, хочу подметить что метод неплохой, нестандартный подход разработчика радует





12) Установленые АВ
a) наличие АВ проверяется по DirectoryExists в ProgramData

Проверяются директории: "AVAST Software", "Avira", "Kaspersky Lab", "ESET", "Panda Security", "Doctor Web", "AVG", "360TotalSecurity", "Bitdefender", "Norton", "Sophos" и "Comodo"




все именно так как и описал разработчик, имена АВ зашиты в теле PE (.data) в зашифрованном виде



контрольная панель траф и таски
4) Запрос на сервер.
С помощью WinSock составляется и выполняется запрос:
Код:
POST /CC/index.php HTTP/1.1
\r\n
Host: site.name
\r\n
Accept: */*
\r\n
Content-Type: application/x-www-form-urlencoded
\r\n
Content-Length: legth_of_post_request
\r\n
\r\n
body_of_post_request
IP адрес резолвится с помощью вызова gethostbyname
общение с панелью осуществляется по протоколу HTTP соответственно траф не шифруется как и передаваемые параметры бикона





лоадер не использует WinINet / WinHTTP API а напрямую кидает запросы в сокет, через Winsock2, следовательно поддержка прокси отсутствует


6) Разбор и выполнение задания.
a) Id таска состоит из 10 цифр, первые 7 это уникальный идентификационный номер задачи, 8-ая цифра определяет метод запуска, 9-ая цифра тип файла (exe/dll) и 10-ая отвечает за тип автозапуска.

Метод запуска EXE. Может быть как обычным, через CreateProcess (когда 8-ая цифра "0"), так и через ShellExecute RunAs (когда 8-ая цифра "1")

c) Тип файла. Если библиотека, то урл делится на собственно урл и имя функции (разделяются символами ":::") происходит сохранение в %tmp% и вызов заданой функции через rundll32.
Если ехе файл, то сохраняется либо в %tmp% (своя автозагрузка), либо в собственную ProgramData/xxxxxx/ (автозагрузка Windows) и запускается в соответствии с выбраным методом (

d) Расширение файла во всех случаях принудительно устанавливается в .exe или .dll, не зависимо от расширения по урл на сервере.

e) Имя файла во всех случаях остается оригинальное, из урл на сервере.
таски отрабатывают без проблем



DLL



EXE



Главная панель, панель статистики и меню тасков все просто и удобно ничего лишнего (автору: добавь дропдаун на UID), код панели я подробно не изучал оставим это на "другой раз". одно лишь добавлю, проверка на RU осуществляется на панели при обработке тасков, так что это не препятствует заражению.
Код:
         }
}
}

if ( strcmp( aGetCountryIndex( GetIP() ), "RU" ) == 0 )
die;

return $res;
   }
можно было вызвать ExitProcess() при удовлетворении strcmp










"Пара" примечаний:

- оригинальный файл не удаляется после перемещения в programdata
- лоадер не использует SSL/TLS параметры запросов так же передаются в открытом виде
- лоадер не применяет никаких IPC ( кпм startTime/runTime code injection / proc mitm)
- ладер не поддерживает прокси hijacking на клиенте
- ладер не препятствует терминации своего процесса
- панель не предоставляет возможности удаления лоадера с зараженной машины (мало ли )
- лоадер не прячет свой резидент на зараженной машине

хотел бы выделить пару моментов:

- уникальный (на мой взгляд) метод персистинга
- стринги (URL панели / имена АВ итп) зашифрованы (надеюсь ключ динамичен на каждый билд).

несколько пояснений:
- лоадер не использует SSL/TLS параметры запросов так же передаются в открытом виде изначально применялось легкое шифрование передачи сервер -> юнит, на этапе тестов выявились проблемы и уменьшение отстука как следствие. Откручено. как только разберусь в причинах падения показателей - прикручу обратно.

- ладер не препятствует терминации своего процесса
я пытался делать, детектов тьма-тьмущая сразу.

- панель не предоставляет возможности удаления лоадера с зараженной машины (мало ли)
техническая возможность есть, не реализовано исключительно для защиты клиентов от них самих же - многие клиенты совсем "не подкованы" технически, при этом любят все везде нажать.

- стринги (URL панели / имена АВ итп) зашифрованы (надеюсь ключ динамичен на каждый билд).
Да, вообще все внутри зашифровано уникальным ключем для каждого билда каждого клиента.

- if ( strcmp( aGetCountryIndex( GetIP() ), "RU" ) == 0 )
Изначально так и планировалось, лоадер должен "отстучать" на СС, при этом не должен выполнять команды. Если клиент не видит отстук после запуска для него это означает "неработоспособность" продукта - отстук должен быть.
заражение РУ машин нежелательным софтом при этом не произойдет, СС игнорирует выдачу задания таким ботам.

в целом продукт неплохой, заявленным характеристикам +- соответствует, автор адекватный по крайнее мере мне так показалось.

автор: pixe1
взято с эксплойта
 

Desoxyn

(L1) cache
Пользователь
Регистрация
01.10.2018
Сообщения
558
Оценка реакций
519
Баллы
101
pixe1 вообще молодчина (он и тут есть). Хотелось бы почаще видеть обзоры на xss, в т.ч. как первоисточник. Тем более это как раз основная тематика дамаги.
 

sii

(L3) cache
Пользователь
Регистрация
23.11.2018
Сообщения
187
Оценка реакций
237
Баллы
38
Хороший анализ, читается легко и все по теме, только одно чуть бы поправить:
● Автозапуск не из реестра Windows
Это не много не верно, так как в реестр все-же вносятся изменения:
a) Вносит изменения в HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Startup -> ProgramData/xxxxxx/
Я понимаю что скорее всего автор говорил о том что ветки Run* не используются, я бы уточнил а то вводит в заблуждение.
 

codedivision

RAID-массив
Пользователь
Регистрация
14.12.2018
Сообщения
71
Оценка реакций
8
Баллы
8
Уже не первые материалы сливают с экспы в паблик. Не приват конечно, но зачем?
 

Quake3

генератор Зла
Модератор
Регистрация
03.11.2010
Сообщения
700
Оценка реакций
280
Баллы
71
Хотелось бы почаще видеть обзоры на xss, в т.ч. как первоисточник. Тем более это как раз основная тематика дамаги.
Я не против делать обзоры, но нечего. На днях писал автор андройд-бота, спишемся, посмотрю, но в андройдах я не особо шарю. А по виндовс малваре - был тут видар этот и какой-то супер-локер. С обоими не получилось прийти к конструктивному диалогу.
 

pixe1

HDD-drive
Пользователь
Регистрация
30.08.2014
Сообщения
30
Оценка реакций
36
Баллы
26
мужики, материал на экспе под хайдом - я не против кросс постинга это два "братских" форума но все же на будующее учитывайте эту деталь ?
 

jess_hide

RAID-массив
Пользователь
Регистрация
27.10.2018
Сообщения
50
Оценка реакций
13
Баллы
16
А сколько цена?
 

BabaDook

(L2) cache
Пользователь
Регистрация
20.04.2015
Сообщения
458
Оценка реакций
323
Баллы
71
Есть куда стремиться автору софта
 

уруру

RAID-массив
Пользователь
Регистрация
03.12.2018
Сообщения
62
Оценка реакций
11
Баллы
8
И в сухом остатке лоадер будет работать только там где нет АВ) Тру стори
 

jeffTheInn0

HDD-drive
Пользователь
Регистрация
14.01.2019
Сообщения
28
Оценка реакций
35
Баллы
18
Jabber
А знаете в чем проблема текущих паблик лоудеров? Что они все ужасны, используют древние/странные техники.
Я сразу после беглого просмотра статьи могу сказать, что заявленный функционал не работает на Windows XP. На XP банально нет "ProgramData", через которую идет проверка уровня доступа.
 

jeffTheInn0

HDD-drive
Пользователь
Регистрация
14.01.2019
Сообщения
28
Оценка реакций
35
Баллы
18
Jabber
Ты бы ещё 98-ю вспомнил :D
Да я вспомнил об Winodws XP только из-за этой строчки:
"Полная совместимость со всеми версиями Windows семейства NT (тесты на XP и новее, включая 10/2016), 32/64 -"

Что там за тесты проводил разработчик остается загадкой.
 

vxero

HDD-drive
Пользователь
Регистрация
30.01.2019
Сообщения
31
Оценка реакций
3
Баллы
8
Хороший обзор
 

mukozeb

CD-диск
Пользователь
Регистрация
06.02.2019
Сообщения
10
Оценка реакций
0
Баллы
1
я так понял через хттпс с админкой он общатся не может?
 
Верх