На прошлой неделе объектом внимания исследователей из антивирусных компаний стала новая вредоносная программа Dexter, которая заражает торговые терминалы под Windows. Программа обнаружена в крупных торговых сетях, гостиницах, ресторанах и других организациях 40 стран, в том числе России и Латвии. Впрочем, 42% зарегистрированных случаев заражения Dexter относится к странам Северной Америки. По мнению экспертов, программа Dexter активно используется злоумышленниками уже несколько месяцев, как минимум с сентября 2012 года.

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

Сложная программа интересна по нескольким причинам, в том числе и потому, что отдельные исследователи видят связь между авторами Dexter и авторами известнейшего банковского трояна Zeus.

Кроме этого, интересны некоторые аспекты функциональности Dexter. Программа внедряет свой код в процесс iexplore.exe, парсит оперативную память POS-терминала и копирует данные пластиковых карт. Более того, она как обычный бот способна не только отправлять данные на удалённый командный сервер, но и получать с него команды. Коммуникации осуществляются по HTTP, через запросы POST. Трафик выглядит примерно таким образом.

Как можно видеть на скриншоте, используется десять переменных, значения которых закодированы в Base64:

  • page
  • ump
  • unm
  • cnm
  • query
  • spec
  • opt
  • view
  • var
  • val

Например, переменная val имеет значение ZnJ0a2o= (Base64), то есть frtkj. Исследователи выяснили, что это ключ, который используется для шифрования всего остального текста через XOR.

“A”.xor(“f”).xor(“r”).xor(“t”).xor(“k”).xor(“j”)

Применив ключ, мы можем получить оригинальный текст шифрограммы:

По нему уже понятно, что означает каждая переменная:

  • page: строка mutex;
  • ump: данные с карты;
  • unm: имя пользователя;
  • cnm: имя хоста;
  • query: операционная система жертвы;
  • spec: тип процессора;
  • opt: неизвестно;
  • view: список всех запущенных процессов в системе;
  • var: некая уникальная строка, которая является константой на данном конкретном экземпляре заражённого устройства;
  • val: случайный ключ, который генерируется при каждом запуске программы.

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

  • update-: обновление программы с соответствующим аргументом;
  • checkin: изменение задержки между сеансами связи с удалённым сервером;
  • scanin: изменение задержки между считыванием памяти и копированием данных пластиковых карт;
  • uninstall: полное удаление программы;
  • download-: скачивание и исполнение кода, указанного через аргумент.

Специалистам удалось получить доступ к административной панели Dexter на одном из серверов.

Полученную с терминалов копию магнитной носителя карты можно использовать для изготовления клона этой карты. Процесс клонирования карт показан на видео.


Видеофайл в формате mp4



Оставить мнение