Skip to main content

Залив на карту без предоплаты из ботнета

Банковский бот Carberp появился не так давно, в первой половине 2010 года, и можно сказать, что этот финансовый троян имеет отличный потенциал, он использует достаточно большое количество необычных трюков для обхода эвристических алгоритмов современных антивирусов и сканеров. «Полезная» нагрузка же делает его сравнимым с Zeus’ом или SpyEye. 

С чего же все началось?

Когда мы исследовали образец этого банковского бота, то из пяти экземпляров, посланных на VirusTotal.com, только один определялся многими антивирусами, а у остальных четырех количество обнаружений было гораздо меньшим. Сравнив все экземпляры при помощи плагина BinDiff для IDA, мы обнаружили, что код был идентичным. Посмотрев внимательнее на файлы в редакторе HIEW, картина стала проясняться. Во-первых, отличались некоторые поля PE-заголовка. Во-вторых, в первой секции «.text» не было кода вообще, а единственное, что там было прописано, — имена двух библиотек (kernel32.dll и advapi32.dll), а также название одной функции (EqualPrefixSid), которые окружены случайными последовательностями байтов. Эти данные используются при распаковке банковского бота, и наконец, отличались таблицы релокаций. Предпоследние секции «.reloc» были различного размера, и сами значения релоков также не совпадали. Именно эти три отличая позволяли данному трояну обходить сигнатуры.

залив на карту при помощи CarberP

Также, помимо пяти образцов одной версии банковского бота, были исследованы еще две версии, которые отличались друг от друга, как механизмами защиты, так и своим функционалом.
При анализе банковских ботов часто приходится сталкиваться со сложностями при снятии навесной защиты из-за различных антиотладочных приемов и обфускации, но с данным экземпляром проблем не возникло, его упаковщик снялся без особых усилий. 
Временные файлы
При анализе этого банковского бота мы сначала не поняли, зачем же он создает временные файлы, копируя в них стандартные библиотеки Windows (ntdll.dll, kernel32.dll и ws2_32.dll). Оказалось, что это делается для безопасности вируса. После создания копии библиотеки, он отображает ее к себе в память, находит нужные ему при работе функции и сравнивает первые 10 байт с теми, что находятся в импортированной библиотеке. Если они не совпадают, значит какая-то «недобрая» программа поставила хук на эту функцию, и банковский троян сразу восстанавливает эти 10 байт из оригинальной библиотеки, а точнее — из образа ее копии. Поэтому с уверенностью можно сказать, что желающие поизучать внутренности Carberp’а могут отложить API Monitor на дальнюю полку своего жесткого диска :)
Вызовы API-функций также сделаны с изюминкой. В программе присутствует механизм, который получает на вход константу, а на выходе высчитывает необходимый адрес. Конечно, этот подход значительно затрудняет статический анализ банковского бота, хотя также имеет и свои минусы — если поставить точку останова на конец функции расшифрования, то легко можно отследить последовательность вызова функций, а написав парочку сценариев для OllyDbg и IDA, можно восстановить их названия и без проблем статически исследовать код. В одной из исследуемых версий трояна также использовалось шифрование всех текстовых строк, используемых программой, что значительно затруднило анализ возможностей совершения платежей в банковских системах SWIFT или SEPA.

Завоевание новых территорий

Во многих троянах код «полезной нагрузки» не выполняется при первом запуске — он инжектируется в какой-то уже работающий процесс и начинает действовать уже там. Этот банковский бот — не исключение, и для внедрения он использует процесс explorer.exe. Только делает он это очень необычно.

аренда ботнета
Первым делом, процесс вызывает функцию CreateProcess с выставленным флагом CREATE_SUSPENDED, тем самым создавая новый, приостановленный дочерний процесс explorer. exe. Затем вызовом функции ZwCreateSection создается объект «секция» (SectionObject — это часть памяти, которая может разделяться между разными процессами) со всеми возможными правами (чтение, запись, исполнение). Далее секция мапится в контекст трояна функцией ZwMapViewOfSection и при помощи memcpy банковский бот копирует свою распакованную копию в эту область памяти. После этого, секция отображается в контекст дочернего explorer.exe, и тем самым туда заносится код банковского бота. Но это еще не конец, ведь код банковского бота должен также выполниться explorer’ом. Для этого функцией ReadProcessMemory из процесса explorer.exe копируется место, где находится спроецированный исходный файл, в контекст банковского бота. Создается еще одна секция, которая сначала отображается в троянскую программу, а потом в нее с помощью memcpy копируется полученная из explorer’а часть памяти. Следующим шагом патчатся несколько байт на точке входа таким образом, чтобы происходил прыжок на функцию перевода денежных средств владельца банковского счета. И наконец, секция отображается в контекст explorer’а на то место, где раньше находился исходный образ.
Теперь все готово для запуска дочернего explorer’а. Троян вызывает ZwResumeThread, тем самым запуская исполняемый код, уже находящийся в другом процессе. Получив управление в новом месте, Carberp начинает работать в полную силу, запуская свои встроенные функции payload’а и внедряясь во все запускаемые процессы. Естественно, во всех новых захваченных территориях банковский бот также производит описанную выше проверку на наличие хуков в необходимых ему API-функциях.
В более новой версии Carberp’а нами был обнаружен другой способ внедрения порожденного процесса explorer.exe. Первые шаги остались неизменными — сначала создается глобальная секция, которая мапится в дочерний процесс, и туда копируется исполняемый код. А дальше вызывается недокументированная функция ZwQueueApcThread, которая ставит в очередь на выполнение в explorer’е асинхронный вызов одной из вредоносных функций, находящихся в образе секции. При вызове ZwResumeThread начинается выполнение банковского перевода.

Игра в прятки

Прежде чем обсуждать функции, которыми может похвастаться данный банковский троян, стоит разобрать еще несколько интересных моментов его жизни. Конечно же, как и любой уважающий себя бот, Carberp прописывается в автозагрузку, причем банально копируя себя под случайным именем в директорию %HOMEDRIVE%\%HOMEPATH%\StartMenu\Programs\StartUp\. Тем не менее, не все так просто! В самом боте предусмотрен механизм, позволяющий скрыть присутствие файла в системе.
После внедрения трояна в дочерний explorer.exe, вызываются механизмы, которые инжектируют его в исходный explorer. Сначала происходит поиск PID-процесса. Стоит отметить, что в программе заложено два способа поиска. Первый способ заключается в последовательном вызове функций FindWindow ("Shell_ TrayWnd", 0) и GetWindowThreadProcessId (hWnd, &id), таким образом, в переменной id должен появиться нужный PID. Если же по какой-то причине функция вернула «id=0», то происходит обыкновенный перебор процессов и поиск нужного.

аренда CapberP

Когда заветный PID найден, программа внедряется в explorer давно известным способом — ZwOpenProcess + WriteProcessMemory. Также банковский бот делает хук двух функций в захваченном процессе — NtQueryDirectoryFile и NtResumeThread из библиотеки ntdll.dll. Чтобы уйти от обнаружения некоторыми антивирусами (например, RootkitUnhooker), хук делается не совсем стандартным способом. Троян подменяет не адрес нужной функции, а адрес функции KiFastSystemCall. Так для чего же подменяются функции? NtQueryDirectoryFile перебирает все файлы, находящиеся в директории. Она вызывается почти во всех программах (в том числе в explorer и cmd) при обзоре каталогов файловой системы. Ее подмена необходима для того, чтобы скрыть факт присутствия файла. NtResumeThread вызывается explorer’ом при смене директории и при (!) запуске приложения. Таким образом, если explorer заражен, то при запуске любого приложения программная «закладка» определяет PID запускаемого процесса и инжектится в него, также подменяя вышеупомянутые функции. Легко понять, что при старте системы троян автоматически запускается, внедряется в explorer, а соответственно и все порожденные им процессы.
На этом заканчивается список средств защиты, используемых Carberp’ом. Полный список средств защиты, применяемый этим трояном, приведен в таблице 2.

Начинка

Разобравшись со всеми защитными механизмами банковского трояна, мы приступили к изучению вирусной начинки. Оказалось, что в нем имеет место вполне стандартный функционал похищения пользовательских данных и перевода денежных средств на счета дропов, сравнимый с функционалом того же IBank’а или Zeus’а, дополненный неплохим протоколом обмена данных между компьютерами холдеров и дроповода. Собирая по всей системе пользовательские сертификаты, пароли к учетным записям и прочей ключевой информации, добытые с помощью работающего кейлоггера и снятия скриншотов рабочего стола, банковский бот упаковывает все найденное в cab-архив и готовит его к отправке.

Общение с ботоводом

Теперь посмотрим на реализованный в трояне протокол обмена данными. Условно в нем можно выделить этап установки соединения и непосредственно рабочий этап обмена информацией.

Этап установки соединения

1 — Зараженный компьютер

1. Установка соединения с сервером 1.
2. Отправка строки GET-запросом, предусматривающей указание параметров:
  • uptime;
  • downlink;
  • uplink;
  • id (зашифрованная строка, содержащая информацию о зараженной системе);
  • statpass (начальный пароль);
  • comment.
Вот пример такого запроса:
/stat?uptime=<val1>&downlink=<val2>&uplink=<val3>
&id=<val4>&statpass=<val5>&comment=<val6>

3. Ожидание приема информации от сервера.

2 – Сервер заливщика (оператора ботнэта)

1. Отправка информации зараженному компьютеру. Могут быть отправлены следующие коды:
  • ok;
  • badpass;
  • session: <№ сессии>.

3 — Компьютер холдера (владельца банковского счёта)

1. Распознавание полученной от сервера информации:
  • ok — соединение установлено;
  • badpass, session — повторная передача начальной информации от сервера.
Этап передачи данных

1 — Компьютер холдера (владельца банковского счёта)

1. Отправка строки POST-запросом на сервер 2, предусматривающей указание параметров:
  • относительного пути, по которому на сервере дроповода будут располагаться переданные файлы;
  • зашифрованная строка, содержащая закодированную строку с информацией о системе и кодовое слово.
Передаваемая строка может выглядеть так:
1|palladin|05B45905A93F7D4B843D385AAE079AF1|0|0
А зашифрованная следующим образом:
a=e15e327af46a915c1b0014a284c052787ea7d63c8c40b1
a3dcafea6bb8e7076b0f6601861783dff7cbca429eb76a47
Шифрование строки сопровождается дополнением избыточности.
2. Отправка сформированного .cab-файла с похищенной информацией серверу 2.
3. Периодически происходит проверка установленного соединения. Данное действие аналогично предыдущему, за исключением того, что передается строка:
0|check|00000000000000000000000000000000|

2 — Сервер ботовода (оператора ботнета)

1. На стороне сервера осуществляется расшифровка принятого сообщения. Отправка уведомления об успешном приеме проверочного пакета.
2. Отправка информации зараженной машине. Вот что сервер может отправить в зависимости от версии троянца.

3 — Компьютер холдера (владельца банковского счёта)

1. Распознавание принятой информации.
Надо сказать, что передачу информации Carberp осуществляет грамотно: инициализация связи сопровождается зашитым в троян паролем, состояние канала связи периодически проверяется специальными пакетами, передаваемая информация шифруется, а шифротекст при этом наполняется избыточностью. Более того, возможно удаленное управление банковским ботом — в разбираемой нами версии присутствовал функционал по разбору команд от удаленного сервера ботовода.

аренда ботнета

Здесь они предусмотрели возможность обновления банковского бота, возможность самоудаления и загрузки дополнительных модулей. Кстати, последние направлены на целевые банковские системы. Эти модули содержат механизм перехвата выполняемой клиентом транзакции и подмены страниц аутентификации на страничках интернет-банкинга.

Дополнительные возможности

Дополнительную мощь банковскому трояну добавляют специальные плагины, которые он загружает вдобавок к основному функционалу. На момент исследования у нас было три зашифрованных плагина с символичными именами miniav.plug, killav.plug и passw.plug (именно в таком виде их удалось достать с сервера, с которым Carberp взаимодействует).

загрузка ботнета


Потратив немного времени на исследование шифрованных файлов и написание к ним декриптора на языке python, удалось выяснить, что содержимое этих плагинов соответствует их названию. Действительно, miniav.plug занимается устранением конкурентов — если на компьютере жертвы помимо Carberp’a присутствует другой зловред, например, тот же самый Zeus, то последний безжалостно удаляется из системы. Плагин killav.plug нейтрализует работу антивирусных систем, ну а passw.plug способен перехватывать вводимые пользователем пароли.

















Comments

Popular posts from this blog

Как работает обнальный бизнес

Пролог: Ни для кого не секрет, что скачать деньги в сети интернет через ботнет - это один из самых, а вероятнее всего самый прибыльный вид онлайн бизнеса в сети. Естественно, ходят легенды о кренделях небесных о том, что кому-то где-то удалось скачать деньги себе на счёт в размере восьмизначных сумм. Кому-то это удается сделать, как например это произошло с центробанком Киргизии, откуда нечаянно утекло 20M USD. Каждый хочет получить кусок этого пирога. 


В этом бизнесе люди делятся на два сорта:

Нальщики: Изначально это амбициозные сукины дети, которые хотят много и сразу и ничего не умеют. Большинство нальщиков в нынешнее время тупо покупают корпы и налят по картам. Раньше, чтобы стать нальщиком нужно было самому отыскать "низкого" номинала на роль директора, найти ещё одного номинала, который с генеральной доверенностью от директора будет открывать ООО и счёт в банке, нужны люди в банке, которые смогут помочь с заказом энной суммы, и желательно хороший тыл. Слава богу это в п…

Как найти заливщика на карту

Своего первого реального заливщика, который показал мне как можно скачать деньги в интернет с банковских счетов, я нашел случайно, когда еще трудился в Укртелекоме сменным инженером немного подрабатывая продавая трафик налево, но потом этот человек отошел от дел в связи со слишком уж скользкой ситуацией в данной сфере, и я решил поискать партнера на форумах, разместив рекламу на трёх электронных досках объявлений. Честно говоря поначалу даже был готов сразу закинуть 500 000 гривен в Гарант, но потом призадумался, а стоит ли?

Ко мне начал обращаться народ обращается разных категорий

1. Дебильная школота, которая что-то любит повтирать про свою серьезность и просит закинуть 10 000 USD им на Вебмани в качестве аванса 
2. Реальные мэны, которые льют сразу большую сумму по SWIFT без разговоров про гарантии и прочую шнягу, но после того, как им отдаёшь нал, они сразу пропадают, суть данных действий я так и не понял. зачем пропадать, если всё прошло гладко? 3. Мутные личности, берущие реквизиты …

Как построить свой бизнес в adSense и получать $5 000 в месяц

Речь идет о сервисе контекстной рекламы Google AdSense, - это партнерская программа от всемирно известной поисковой системы Google, в который может зарабатывать ощутимые суммы любой человек, имеющий тематический web сайт.

Однако, многие начав этот бизнес очень скоро понимают, что особенно далеко на всём этом не уедёшь, получая дополнительные $100 - $150 в месяц как бонус к окладу на своём основном месте работы на дядю.




Но есть и другие, кто зарабатывает внушительные суммы в этом бизнесе, но они свои секреты обычно не раскрывают на всевозможных форумах типа searchengines.guru или тематических группках ВКонтакте, посвещенных продукту adSense.

Так как же все таки сломать стереотипы и начать зарабатывать в adSense хотя бы $2000 в месяц? Как оказалось ответ лежит на поверхности и он довольно простой. Обычно, людям серьёзно работающим с adSense всегда требуются свежие учетки для новых проектов.

У меня тоже когда-то был свой сайт в интернете с рекламой adSense, за которую я получал $50 - $7…

Богатые "папочки" спонсируют учебу сочинских студенток

Некоторые называют эти отношения "взаимовыгодными знакомствами". Другие не видят разницы между растущей популярностью отношений девушек студенток с состоятельными мужчинами старшего возраста и обыкновенными сексуальными услугами Маше 22 года. На ней спортивные штаны и футболка. Она решила спать с мужчинами гораздо старше ее самой, когда она училась в университете.

Свои мысли она выражает спокойно и ясно. "Я люблю секс, - говорит Маша, - и хочу заметить, я хорошо знаю, как им заниматься. Так что найти "папочку" или двух не составило никакого труда".

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

"Мой женатый "папочка" давал мне примерно 50 долларов за ночь", - говорит Маша. - Его интересовал только секс. Мой разведенный "папочка" давал мн…

Black Hat SEO или бот для скликивания контекстной рекламы

На днях мне стало интересно, а каким образом с точки зрения «черных» методов SEO могут быть использованы хакерские программы – например, путем генерации трафика для заинтересованных ресурсов или скликивания контекстной рекламы AdWords или Яндекс.Директ
Понятно, что увеличение числа посетителей на сайте интернет-магазина или компании, занимающейся недвижимостью, вероятнее всего положительно скажется на их доходах. Поэтому разработка подобного типа программ — вполне себе обыденное дело, и появились такие программы уже давно. По большей части таких ботов можно разделить на два класса — это различного рода Adware, которое распространяется вместе с популярными программами, или трояны, которые осуществляют более серьезную модификацию системы.  Win32/Patched.P Давай для начала рассмотрим достаточно экзотический, но от этого не менее интересный способ подмены результатов поиска в популярных поисковых сервисах Яндекс и Google, который был реализован в троянской программе Win32/Patched.P (ESET)…