Как стать автором
Обновить
0

Зевс – гроза для смарт-карт

Время на прочтение4 мин
Количество просмотров11K
В процессе одного совместного с компанией Group-IB расследования, связанного с мошенничеством в системах дистанционного банковского обслуживания, мы проводили исследование нескольких вредоносных программ. Образцы этих программ были получены экспертами по компьютерной криминалистике из Group-IB в процессе раскрытия преступления. Картина была довольно стандартной: обнаруженной вредоносной программой оказался троянец Zbot, который, казалось бы, уже изучен вдоль и поперек, но все же, мы решили поковырять его несколько подробнее. И началось самое интересное. А точнее, замечен был довольно любопытный функционал, о котором и пойдет речь ниже.

Версию Зевса, которая попала к нам в руки, интересует информация о различных финансовых транзакциях, осуществляемых на зараженной машине. Ну, например, информация об активности с системами онлайн клиент-банкинга. Zbot осуществляет постоянную проверку посещаемых интернет-страниц через перехват соответствующих WinAPI функций. В случае установления SSL-соединения с ресурсами, которые содержат строки, интересующие троянца, он предпринимает следующие действия:

— анализ строки запроса на наличие шаблона username=.*&password=.*
— анализ строки запроса на наличие шаблона /bsi.dll/?T=

При успешном обнаружении указанных шаблонов осуществляется запуск процедуры фиксирования нажатых клавиш на клавиатуре и мыши, а также процедуры снятия скриншота экрана (далее информация записывается в отдельный файл и отправляется на сервер).

Но это все было замечено и в других модификациях Зевса. Самое интересное обнаружилось чуть позже. Когда мы изучали функционал, отвечающий за поиск подключённых к компьютеру логических устройств, в частности, был обнаружен функционал Zbot, который осуществляет поиск файла A:\key.dat. Данный файл, как правило, содержит ключи для санкционированного входа в систему клиентского онлайн-банкинга и если файл найден, его копия отсылается на сервер. Кстати, Зевс отправляет на сервер достаточно много всего:

— информацию по подключённым устройствам считывания смарт-карт, а также непосредственно по самим смарт-картам
— результаты фиксирования нажатий клавиш на клавиатуре и на мыши, информация записывается в отдельный файл и отправляется на сервер
— файлы cookies
— копии любого обнаруженного в системе файла

И вот тут нас очень заинтересовал функционал, связанный с мониторингом подключенных смарт-карт. Архитектура подсистемы поддержки смарт-карт в операционных системах MS Windows имеет довольно сложную структуру, предполагающую многоуровневую систему драйверов:

image
Основу этого функционала, работающего на уровне SmartCard API, составляет взаимодействие с Resource Manager, при помощи которого происходит управление доступом к нескольким одновременно работающим на одной машине устройствам считывания и непосредственно смарт-картам. Фактически, контроль и управление подключёнными смарт-картами осуществляется по двум направлениям:

— постоянный контроль и журналирование текущего состояния устройств считывания
— некоторые активные действия со стороны злоумышленника

Zbot осуществляет мониторинг подключённых устройств для считывания, а также регистрирует изменения в этих устройствах. При этом регистрируемые данные хранятся в системной структуре SCARD_READERSTATE, содержащей текущую информацию об имени устройства, текущее программное и аппаратное состояние, а также атрибуты используемой карты. Эта структура хранится в памяти процесса по случайному смещению, а затем отправляется по заранее установленному сетевому каналу между заражённым компьютером и компьютером злоумышленника.
В декомпилированном виде это выглядит так:

image

На основе собранной информации злоумышленник генерирует некоторую программу действий, которая представлена в качестве управляющей последовательности и отправляемой по сетевому каналу, о чем говорилось выше. Эта управляющая последовательность сохраняется на заражённой машине и затем обрабатывается. Обработка последовательности заключается в переводе её элементов в следующие функции библиотеки Winscard.dll:

SCardGetStatusChange
SCardStatus
SCardDisconnect
SCardControl
SCardEstablishContext
SCardListReaders
SCardConnect
SCardBeginTransaction
SCardEndTransaction
SCardTransmit
SCardGetAttrib

Или же ее можно представить в виде следующей схемы:

image

Функция, обрабатывающая управляющую последовательность, выглядит достаточно громоздко, но, по большей части, сводится в вызовам приведенных WinAPI:

image

Часть кода в декомпилированном виде выглядит следующим образом:

image

Комбинируя элементарные действия уровня SmartCard API, злоумышленник может выбрать необходимое устройство считывания и подключиться к некоторой смарт-карте, осуществить запись и чтение информации со смарт-карты, может использовать специальные функций, предоставляемые смарт-картами: шифрование и расшифрование данных, генерация электронно-цифровой подписи, генерация последовательности псевдослучайных чисел фиксированной длины.

Результат обработки управляющей последовательности сохраняется и отправляется по сетевому каналу злоумышленнику для корректировки его действий. Схематически такое взаимодействие можно представить следующим образом:

image

Важной особенностью реализации данного функционала является тот факт, что управляющую последовательность, исходящую от злоумышленника, можно составить и приспособить практически для любого устройства считывания. Поэтому спектр воздействия злоумышленников достаточно велик: он подходит для настольных считывателей, для мобильных, для считывателей с PIN-клавиатурой, для биометрических и для многих других.

Но, несмотря на найденный нами функционал, на сегодняшний день смарт-карты остаются самым безопасным способом хранения ключевой информации из всех существующих.
Теги:
Хабы:
+5
Комментарии5

Публикации

Информация

Сайт
www.esetnod32.ru
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Словакия

Истории