Опять весна, опять грачи, опять один, опять _________ (добавить свое
Весенне настроение не располагает к серьезным материалам, но ввиду быстро меняющегося хак-рынка нам всегда необходимо быть "в теме".
Постараюсь на такой легкой и непринужденной волне поведать Вам об очередном продукте на рынке лоадеров под названием "PID Loader".
Ситуация завязалась сама собой. Наш форумчанин Salatin отписался мне в асю о своем детище и понеслось.
---==Описание от автора:==---
Автор: Salatin (хотя стоит отметить, что в readme написано: "Данный продукт являются собственностью команды PID Team.")
Официальный топ продажи url
офф. описание на момент получения:
PID Loader - это резидентный лоадер, сочитающий в себе простоту, удобность, интуитивно понятный интерфейс.
Написан продукт полностью на WinAPI. Никакого лишнего мусора в билде, что может ярко продемонстрировать размер ~15Кб
У Вас никогда не будет проблем с криптованием, так как продукт не использует никаких набортных dll и легко поддается крипту сторонних крипторов.
Полностью весь функционал лежит в самом exe. Никаких сторонних библиотек, файликов и прочего. Продукт совершенно не подгружет компьютер. Написан с использованием новейших технологией обхода проактивных защит антивирусов.
Это все делает его реально незаметным в системе, при таком-то функционале.
Кратко обо всем:
• Пробив со связки 85-90%
• Обход проактивных защит антивирусов
• Обход большинства фаерволов. Для теста были взяты следующие:
-- ESET NOD32 Smart Security- не палит
-- Kaspersky Internet Security 2011 - не палит
-- avast! Internet Security 5 - не палит
-- AGAVA Firewall - не палит
-- F-Secure Internet Security 2011 - не палит
-- Norton Internet Security 2011 - не палит
-- ZoneAlarm Internet Security Suite - не палит
* Все представленные продукты тестировались на стандартных настройках.
• Невидимость в системе
• Интуитивно понятный интерфейс админки
• Партнерская часть - возможность создавать аккаунты для селлеров загрузок. При этом каждому селлеру выдается логин, пароль и своя стата.
• Подробная статистика по селлерам, странам, датам и пр.
• Возможность распределять лоады по странам и селлерам
• Поддержка самообновлений ботов
• При блокировке основного домена, бот переходит на резервный.
• Защита от потери ботнета. При блокировке основного домена, в админке выдается предупреждение о возможных проблемах с основным доменом.
• Удобный крипт - никаких dll
• Бесплатная поддержка
Бот удачно прошел тесты на системах: win 2000, win XP, win Vista, win 7.
В арсенале у нас есть 2 типа продукта: Resident PID Loader, NON Resident PID Loader.
Отличия данных продуктов, как видно из названия в том что, Resident PID Loader - резидентный, NON Resident PID Loader - нерезидентный.
При этом кроме данного фактора никаких различий в них нет. Все новые методы, обходы и фичи применяемые в одном, сразу же будут внедряться в другой.
Цены:
Resident PID Loader: 500$
NON Resident PID Loader: 200$
Все обновления в пределах версии бесплатны.
Чистки: 20$
Ребилд на новый домен: 40$
Приобретая данный продукт, Вы автоматически принимаете соглашение.
Контакты для связи:
ICQ: 15-75-65
Для себя отмечаем следующие моменты: резидент, 15 кб., обходы, отстук со связки составляет 85-90%
---==Установка==---
Был выдан архив. В нем админка и билдер сэллеров с заготовкой стаба.
Дабы вас не вводить в заблуждение сразу оговорюсь, что лоадер изначально заточен под работу с сэллерами.
Запускаем билдер, указываем необходимое количество сэллеров и получаем по этому количеству файлы вида sel1.exe, sel2.exe, sel3.exe...
Установка админки занимает не более 5 минут. В комплекте удобный мануал по установке и всем настройкам. Искать и спрашивать ничего не приходилось.
После установки админки заводим нужное количество сэллеров (по кол-ву файлов) прямо из админки. (чуть ниже на скринах все будет видно).
Из первой найденной баги стало понятно что админка заточена полностью под апач. На моем nginx сразу возникли трудности (после очистки статы или изменения настроек редиректило на localhost). Но автор оперативно среагировал и переписал необходимый функционал под меня. В итоге через час после обнаружения баги она была исправлена. Это радует.
Рис.1 | Рис.2 | Рис.3 | Рис.4 | Рис.5
мануал по установке и описание функций:
I. Установка
1)Распаковать выданный архив.
2)Залить содержимое папки upload на сервер.
3)Установить на папку со скриптом и на все вложенные в нее файлы права 777.
4)Запустить install.php и следовать инструкциям.
II. Использование билдера:
1)Запустите файл lbuilder.exe
2)Ввести интервал id селлеров(созданных в админке), Выбрать шаблон лоадера (sel.exe). Выбрать папку для сохранения файлов. В папку сохранятся экземляры ботов для конкретных селлеров. Например Вы ввели 2-5. В выбранную папку сохранятся файлы sel2.exe, sel3.exe, sel4,exe, sel5,exe. Затем их нужно криптануть и выложить в папку /dl/exes/ под этими же именами. Скрипт подхватит данные файлы и в аккаунте каждого селлера появится линк для скачки его файла.
III. Использование шифровалщика файлов:
1)Запустите файл LFileCoder.exe
2)Выбрать файл для шифрования и нажать сохранить.
Внимание! Это НЕ криптор файлов. Он необходим для того чтобы скрыть, что прогружаемый из задания файл является exe. После того как лоадер скачает данный файл, он автоматически определяет зашифрован ли он, и если да, то расшифровывает и запускает как exe. При этом расширение файла как зашифрованного, так и не зашифрованного для лоадера не важно. Рекомендуется использвать данную утилитку для хранения файлов на бесплатных хостингах.
IV. Навигация по админке.
1)Первый пункт меню - селлеры. Тут, думаю все понятно-создаем селлера для прогруза, зайти под которым можно по адреcу /dl/partner/
2)Второй пункт меню - задания. Необходимо указать: имя задания; линк - откуда качать файл; сраны включенные/исключенные в прогруз; для каких селлеров прогружать. После создания задания, его можно запаузить.
3)Стата по системе - тут, думаю, все понятно.
4)Очистить стату - аналогично.
5)Обновить ботов(пересчитать хеши ботов) - нажимается, когда Вы выкладываете обновленные версии ботов(будь то новый крипт или еще что то) в директорию для обновлений, указанную в настройках. В случае, если в настройках выключена опция автообновления, данная функция не сработает.
6)Настройки: Думаю разъяснения требует только пункт 2: Предупреждение о смене домена - процентная величина, указывающая, в каком процентном соотношении боты недостучались до основного домена. Данная настройка необходима для своевременной смены основного домена, во избежание потери ботнета.
--==Обходы==---
winxp SP3 philka. Накатил все офф обновления с майкрософта.
запуск от пользователя по дэфолту, т.е. от пользователя с правами администратора.
Все АВ комплексы перед запуском лоадера были полностью обновлены.
На текущее время (ночь с 09.03.11 на 10.03.11) данные следующие:
agava firewall - (все по дефолту. Инспектор приложений по умолчанию выключен) - палит активность Рис.6 | Рис.7
Avast Internet Security - (все по дефолту, выбрана зона "работа", т.к. она идет по дэфолту) - не палит. Рис.8
ESET NOD32 Smart Security - (все по дефолту) - палит АВ !!! Отключаю АВ смотрю что скажет фаерволл - не палит. Рис.9 | Рис.10
F-Secure Internet Security 2011 - (все по дефолту. да и тут и выбирать-то нечего было) - Палит АВ, выключаю. Запускаю снова - фаерволл не палит! Рис.10
ZoneAlarm Internet Security Suite - (все по дефолту) - не палит.
Kaspersky Interner Security - (все по дефолту) - не палит.
Win7SP1-ultimate edition
запуск от обычного пользователя.
На текущее время (ночь с 12.03.11 на 13.03.11) данные следующие:
agava firewall - не работает с windows 7
Avast Internet Security - (все по дефолту, выбрана зона "работа", т.к. она идет по дэфолту) - не палит.
ESET NOD32 Smart Security - (все по дефолту) - палит АВ. Отключаю АВ - не палит.
F-Secure Internet Security 2011 - палит АВ. Выключаю - не палит.
ZoneAlarm Internet Security Suite - не палит.
Kaspersky Interner Security - (все по дефолту) - не палит.
p.s. скрины не дублировал. Результаты абсолютно идентичны.
В итоге у нас не подтвердился только один пункт agava firewall. Автор сказал что уберет его из описания обходов. (на текущий момент этого обхода в официальном топе нет)
Предотвращая кучу вопросов насчет многопользовательского режима - а часто вы видите юзеровские машины с многопользователями? А если быть еще точнее - с урезанными правами?
---==Реверс==---
Скажем огромное спасибо нашему проверяющему EL- за проведенную работу. (если кто не помнит - достаточно просто плюсануть в репу чисто символически показав свою благодарность.)
Прочитав описание стало интересно что же там такое, в общем ~17 кб, хз в чем собранный ( писалось на асме имхо ), но крайне не приятно, все параметры передаются через регистры, стек юзается когда надо затолкать что то в апихи.
Код:
nullsub_1();
if ( !create_heap() )
deinit(0);
void __usercall deinit(int a1<eax>)
{
pCloseHandle(g_master_event, a1);
mem_free_all();
HeapDestroy(g_heap);
ExitProcess(0);
}
С самого начала, пытается создать свой хип, и в случае не удачи перекрывает все и завершается, все бы хорошо только к тому моменту CloseHandle еще не найден и равен нулю, убивает он кстати хендл евента который юзается для контроля запуска нескольких процесов, только на многопользовательской системе такое не прокатит ибо инициализирован он не правильно и можно будет запустит по лоадеру для каждого юзера. Вроде хотели как лучше получилось как всегда, к тому же если хип еще не инициализирован зачем освобождать память, которой нету, да и сделав HeapDestroy по сути грохнуться все участки выделенные в нем. По поводу памяти, тут каждый выделенный участок помещается в глоабльный массив, сделано это скорее всего для контроля утечек памяти, по сути тоже ни к чему.
Код:
g_our_base = *(_DWORD *)(*MK_FP(__FS__, 0x30u) + 8);
g_image_size = *(_DWORD *)(*(_DWORD *)(g_our_base + 0x3C) + g_our_base + 0x50);
anti_emulation();
get_apis();
if ( !get_apis_again() )
deinit(0);
anti_emulation это три цикла длинной 0x2FFFFF раз с вызовом Sleep(0), видимо помогая, потом в get_apis собственно получаются необходимые апихи, кстати все тектовые строки поксорены и предварительно декриптуются в память, сказать по правде тут все закидывается в выделенную память, по феншую так сказать, стек почти не юзается. А в get_apis_again получаются оставшиеся апихи, причем крайне извратно, до вызова GetProcAddress строку декриптуют но ни как до этого выделяют память и туда собственно ксорят, а создают тред который по сути крутится в цикле пока глобальное значение установлено в 1, потом с помощью SuspendThread/ResumeThread/GetThreadContext дергая их по очереди убеждаются что тред висит внутри нашего модуля, а не где то там, меняют eip += 0x40 через SetThreadContext, дабы управление передалось на код который собственно уже декриптует строку и находится ниже этой пустой функи.
Код:
CODE:0040274A mov eax, [ebp+8]
CODE:0040274D add eax, 4
CODE:00402750 mov [ebp-4], eax
CODE:00402753 mov esi, [ebp-4]
CODE:00402756 mov edi, [ebp-4]
CODE:00402759 push dword ptr [ebp-4]; lpString
CODE:0040275C call lstrlenA
CODE:00402761 mov ecx, eax
CODE:00402763
CODE:00402763 loc_402763: ; CODE XREF: decrypt_str_thread+21j
CODE:00402763 lodsb
CODE:00402764 xor al, ds:byte_405004
CODE:0040276A stosb
CODE:0040276B loop loc_402763
CODE:0040276D push 0
CODE:0040276F call ds:pExitThread
Круто нереально, только не понятно зачем, мб опять же антиэмуляция или мб что бы отпугнуть реверсеров.
В общем после проверив наличие евента, дабы не пустить вторую копию, бот ставится в реестр software\microsoft\windows\currentversion\run под именем PID, причем бот не очень морочится с копирование себя куда то там, где лежал там и будет лежать, пишет в реестр то что вернет GetModuleFileName. Обычно связки юзают UrlDownloadToFIle а значит лоадер появится где то в кеше ишака, при запущенном процессе его врядли смогут грохнуть очисткой кеша, хотя хз.
Код:
if ( !pOpenEvent(0x100000u, 0, off_405138) ) // xwcsnxcirm
{
g_master_event = pCreateEvent(0, -1, 0, off_405138);
install_check_n_install_to_reg(v0);
create_thread_ex((int)kill_taskmgr, 0, 0);
get_guid();
decrypt_http_strs(v1);
Пуск треда kill_taskmgr обеспечивает собственно своевременное убийство task managera дабы юзер много не думал о том что это за load[1].exe в процессах.
Код:
while ( 1 )
{
v9 = pGetForegroundWindow();
if ( v9 != v10 )
{
v10 = v9;
pGetWindowsThreadProcessId(v9, &v8);
v7 = pOpenProcess(2035711, 0, v8);
if ( v7 )
{
pEnumProcessModules(v7, &v3, 1024, &v6, v2[0]);
pGetModuleFileNameExA(v7, v3, v2, 256);
pCloseHandle(v7, v2[1]);
v1 = pstrrch('\\', (const CHAR *)v2);
v5 = sum((int)v2, v1 + 1);
if ( strstri((const CHAR *)v5, psz_taskmgr_exe) == 1 )
ExitProcess(0);
}
}
Sleep(0xAu);
По поводу обходов, я их не нашел, бот декриптует необходимые ему строки для хттп запросов и тупо ломится по своим урлам, потом он видимо получается всякие нужные команды и начинает их запускать. В ответ идет страница Not Found где ниже в невидимом div'е идут уже команды.
• Пробив со связки 85-90% - до многих уже дошла мысль, чем проще бот тем он надежднее а значит выше отстук, хотя попробуйте полить его по юса, не так все будет
• Обход UAC - обхода юака нету, его юзают то парочка другая ботов, за счет экспов повышения привилегий, тут же все действия не затрагивают юак, а значит не вылетает никаких окошек
• Обход проактивных защит антивирусов
• Обход большинства фаерволов. - опять же видимо из-за топорности, ав и фв не интересно в этим возиться
• Невидимость в системе - это наверное kill_taskmgr
• При блокировке основного домена, бот переходит на резервный. - ах да есть пару доменов
+ всякие хеки админки обычные для лоадеров, хотя саму админку я не видел
В общем если выкинуть весь лишний мусор, оптимизировать код и собрать в нормальном компиляторе ( это я все еще про то что не юзается стек для передачи параметров ), то вся эта байда поместится в 5-6кб.
Коментарии автора к реверсу:
1. реверсер немного не прав, таксменеджер не убивается, а наоборот, при вызове оного бот прячется, тоесть уходит в офф до перезагрузки
2. Бага с вызовом функций по неопределенным адресам, при невозможности выделения памяти в куче в начале программы - пофиксена, спасибо.
---==Тесты==---
Тут автор нервничал что может получиться ситуация аналогичная myLoader + eleonore exploit. У меня абсолютно случайно (ну так совпало) получилось провести все тесты на трех разных связках. Думаю это будет достаточно объективно.
Все тесты проводились на одном и том же трафе, любезно предоставленным Gdark. Трафик iframe, mix, adalt+развлекательный.
Все тесты проводились по схеме Связка=>PID Loader=>Стукач
Дабы небыло повторных лоадов старыми ботами нового задания статы старался не очищать.
Тест №1 на Eleonore Exploit Pack 1.6.4
отгружено по стате связки 641
отстучалось по стате лоадера 325-35=293 (35 это проверки на отстуки, фаерволы, и крипт.)
отстук составляет 45,7%
отгружено по стате лоадера 321 бот
Отстучалось по стате стукача 222 бота
Отстук стукача составил 69,15%
Скрины сделаны через 30 мин после окончания прогруза: Отгружено со связки | Отстучалось в админку | Отгружено с лоадера
Тест №2 на Nuclear Exploit
Отгружено по стате связки 878
отстучалось по стате лоадера 808-325=483
отстук составляет 55%
отгружено по стате лоадера 770-321=449 бот
Отстучалось по стате стукача 347 ботов
Отстук стукача составил 77,28%
Скрины сделаны через 10 часов после окончания прогруза: Отгружено со связки | Отстучалось | Отгружено с лоадера
p.s. После этих двух тестов выяснили, что при текущем крипте файл криво работает на Windows 7. Файл тихо стартует и тут же умирает (проверял лично несколько раз).
Сделали новый крипт. Заново все перепроверили.
Тест №3 лоадер через лоадер
т.к. живых ботов в админке практически не осталось - стату обнулил для удобства подсчета.
Отгружено по стате сервиса 547-14=533
отстучалось по стате лоадера 502-27=475
отстук составляет 89,11%
отгружено по стате лоадера 493-26=467 ботов
Отстучалось по стате стукача 377 ботов
Отстук стукача составил 80,72%
Скрины сделаны через 1 час после окончания прогруза: Стата сэллера до прогруза | Стата сэллера после прогруза | Лоадер до прогруза | Лоадер после прогруза | Стата отгрузки до | Стата отгрузки после
Скрины сделаны через 1 сутки после окончания прогруза: стата | Выполнение задания
Тест №4 на Katrin Exploit
p.s. всвязи с тем что в процессе загрузок домен спалился пришлось разбить по двум статам. Разница в пробиве автором связки объясняется различными наборами сплоитов. Во втором тесте был подключен новый Java-сплоит.
[15:09:39] <Ar3s> Тут еще один вопрос выплыл. Стал анализировать цифры и вышла такая математика.
Траф один и тот же. Поток не менялся.
НА первой связке 11,44%
На второй связке 21,41%
Почему такая разница????
[15:10:03] <blackkat> джаву поставил
[15:10:10] <blackkat> новую потестил
[15:10:21] <blackkat> последнюю из метасплоита которая
[15:10:41] <blackkat> на втором домене
[15:10:51] <blackkat> не знаю как стучит правда
[15:10:57] <Ar3s> Java OBE?
[15:10:59] <blackkat> но пробивает красиво
[15:11:10] <blackkat> ну я ее по старинке обозвал
[15:11:14] <blackkat> это не обе
[15:11:25] <blackkat> что в админке не менять
[15:11:35] <blackkat> поставил обеешный линк
[15:12:06] <Ar3s> ясн
Отгружено по стате связки 270+498=768
отстучалось по стате лоадера 1144-502=642
отстук составляет 83.59%
отгружено по стате лоадера 1106-547=549 ботов
Отстучалось по стате стукача 351 бот
Отстук стукача составил 63,93%
Скрины сделаны через 30 минут после окончания прогруза: Катрина до | Катрина, 1 часть | Катрина, 2 часть | Отстучалось | Стукачик
---==Заключение==---
Кое-что из наших бесед с автором:
5777677 (21:57:19 5/04/2011) обходов у тебя нет. Просто проактивки не реагуруют на твой продукт т.к. он не инжектится никуда и не агрессивен в системе. А это разные вещи.
salatin (22:05:05 5/04/2011)
В билде вшит наш личный метод обхода (КИС), метод я раскрывать не хочу. Суть его заключается в том, что мы исследовали как реагирует на ту или иную ситуацию данный АВ. И составили программно логическую модель, что КИС его кидает в слабые ограничения. Все тесты проводились нами на KIS 8. Так уж сложилось, что он пложительно влияет на остальные фаеры. И еще, а разве обходы обязательно должны быть какими-то сплоитами/руткитами? Как по мне, то обход - есть факт того, палит ли фаер прогу. если нет, значит прога его обходит.
Плюсы: маленький размер, обходы, легко криптуется, не содержит dll/драйверов и прочей мути. Правильно выполняется задание. У меня на стате лоадера при быстром прогрузе задание всегда немного перевыполнялась, собственно как оно и должно было быть.
Минусы: плохая живучесть. Спустя сутки я не видел более сотни ботов онлайн. Зачастую было 20-90 хотя в общей сложности было прогружено 1914 ботов, не считая мелочевки для проверки правильности крипта. И даже после того как решили исключить влияние моего хоста и настроенного nginx путем установки админки на дешевый хостинг и перебивки доменов на новый ip - ситуация не изменилась. Хотя автор утверждает, что на его хосте отстук и живучесть на высоте. Давал мне доступ к своей админке в которой было немало ботов. Притом не только что загруженных. И онлайн было очень много даже из тех, что были прогружены более 3 суток назад. Вобщем, я не знаю какой вынести вердикт в этом случае и, как апогей, я опираюсь на свою админку и свои показатели.
Пара слов об авторе: Адекватен. На все мои замечания реагировал очень быстро. Активно участвовал в обзоре.
p.s. у меня чуство, что после обзора он активно сядет сам за тесты и добьется отличных показателей.
---==Благодарности==---
Salatin, EL-, Gdark, HTC и всем читателям xss.pro/
Записки на полях специально для xss.pro/