Анализируем малварь, созданную для POS-терминалов

Авторы малвари не стоят на месте, а постоянно выдумывают новые схемы для пополнения своих кошельков. В этой статье мы рассмотрим новый тренд в сфере вирусописательства — вредоносное ПО для POS-терминалов.

Что такое POS-терминал?

POS переводится как точка продажи (point of sale), то есть место, где клиент расплачивается за товар или услуги. POS-терминалы представляют собой широкий класс устройств, и реализация его зависит только от фантазии производителей. К примеру, существуют POS-терминалы, созданные на базе планшета iPad. Пока вирусописатели для POS-терминалов освоили только одну платформу — Windows, так что речь в данной статье пойдет о вредоносном ПО именно для нее.

Чем же интересны POS-терминалы злоумышленникам? Ответ прост — эквайрингом, то есть оплатой пластиковой картой. Несмотря на то что стандарты безопасности данных индустрии платежных карт запрещают хранить полные данные карты после успешной транзакции, вирусописатели все же нашли способ получить их в свои руки. Дело в том, что для авторизации покупки POS-терминалу необходимо каким-либо образом связаться с процессинговым центром, а все это время данные карты находятся в памяти POS-терминала. Этим и решили воспользоваться злоумышленники. Еще раз повторюсь, что реализаций POS-терминалов огромное множество и данная атака будет успешна не на всех устройствах.

Злоумышленников интересуют track1 и track2 — данные, записанные на магнитную ленту. В этих данных содержатся имя владельца, код карты, срок окончания и прочая интимная информация. Обладание track1/track2 достаточно для того, чтобы изготовить клон пластиковой карты.

Dexter

В декабре 2012 года израильская компания Seculert сообщила о новой вредоносной программе, обнаруженной ею на сотнях POS-систем в различных странах мира. Одна из интересных подробностей — среди зараженных систем оказалось свыше 30% серверных версий ОС Windows . Эта компания предоставляет облачный сервис, помогающий выявить вредоносную активность в сети предприятия, анализируя лог-файлы, созданные различными программными или аппаратными прокси-серверами (Blue Coat, Squid и другими). Неудивительно, что именно она первой обнаружила эту угрозу.

Статистика ОС, зараженных Dexter, по версии Seculert
Статистика ОС, зараженных Dexter, по версии Seculert

Рассмотрим файлы, хеши которых опубликовала Seculert. Файлы запакованы довольно популярным криптором, который в процессе распаковки использует сигнатуру XPXAXCXK. Этот криптор широко используется для сокрытия от сигнатурного детекта. А поэтому и изучен он тоже неплохо, для него даже написан статический распаковщик.

Впрочем, для распаковки вручную достаточно поставить брейкпоинт на WinAPI-функции VirtualAlloc и протрейсить код до тех пор, пока в одном из выделенных регионов памяти не окажется распакованный PE-файл.

Распаковка Dexter
Распаковка Dexter

После снятия криптора мы обнаружим, что три из четырех файлов полностью идентичны. Размер первого варианта составляет всего 24 Кб, файл скомпилирован с помощью Visual Studio, дата компиляции 30 августа 2012 года, согласно данным из PE-заголовка. Второй, более поздний вариант скомпилирован 16 октября 2012 года, а его размер 44 Кб.

Теперь поближе к самому функционалу. Первым делом Dexter пытается внедрить свое тело и создать поток в процессе Internet Explorer. Далее вредонос копирует себя в %APPDATA%, используя случайное имя, а также прописывается в ключе реестра для автозагрузки. Dexter запускает свои потоки, которые отвечают за сохранность ключа автозапуска в реестре, поиск данных и внедрение в процесс IE. В заключение управление передается коду, устанавливающему соединение и передающему собранные данные на сервер.

Для связи с сервером Dexter использует HTTP-протокол, данные передаются с помощью POST-запроса. Прежде чем отправить данные на сервер, Dexter шифрует их с помощью XOR-операции и алгоритма base64. На сервер посылается следующая информация:

  • page — идентификатор бота;
  • ump — собранные track-данные;
  • unm — имя пользователя;
  • cnm — имя компьютера;
  • query — версия операционной системы;
  • spec — «битность» операционной системы (32 vs 64);
  • opt — время, прошедшее от предыдущего ввода пользователем информации. Получено с помощью WinAPI-функции GetLastInputInfo;
  • view — список всех процессов, запущенных на зараженной системе;
  • var — уникальная строка для каждого билда;
  • val — случайная строка, используется как ключ для расшифровки.

На этот POST-запрос сервер высылает ответ, в хидере которого содержатся cookie с командой на выполнение для клиента. Команда зашифрована тем же алгоритмом, что и запрос. Ранняя версия Dexter поддерживает всего две команды:

  • checkin — установка периода задержки между запросами к серверу;
  • scanin — установка периода задержки между попытками найти track-данные в памяти. В поздней версии к этим двум командам были добавлены еще три:
  • update — обновление с указанного URL;
  • uninstall — удаление себя с зараженного компьютера;
  • download — скачивание и запуск файла с указанного в команде URL.
Dexter отправляет зашифрованные данные на сервер
Dexter отправляет зашифрованные данные на сервер

В целом Dexter обладает классическим набором функционала для троянца. Единственное, что делает его уникальным среди множества похожих вредоносных программ, — это направленность на кражу данных о пластиковых картах. Поиск track2 идет по такой последовательности:

  1. Составляется список процессов. Из списка исключаются системные и 64-битные процессы.
  2. С помощью WinAPI-функции VirtualQueryEx проверяется доступность регионов памяти.
  3. Происходит попытка чтения памяти из доступных регионов с помощью WinAPI-функции ReadProcessMemory.
  4. В прочитанном буфере ищется символ =, а также проверяется, чтобы справа и слева от символа была строка определенной длины, состоящая из цифр. Учитывается возможность хранения строки как в ANSI, так и в Unicode.
  5. Цифры слева от символа = проверяются с помощью алгоритма Луна. Если проверка пройдена, данные копируются в специальный буфер, откуда позже будут посланы на сервер.
  6. Через определенный период все шаги повторяются, данный период может быть задан командой с сервера.

В более поздней версии Dexter поиск track1 ведется по схожему алгоритму.

Функция поиска данных карты в декомпилированном виде
Функция поиска данных карты в декомпилированном виде

vSkimmer

Эту малварь принято считать последователем Dexter. В vSkimmer добавили простой антидебаг, выполненный посредством стандартных WinAPI-функций, и запись своего собственного процесса в доверенные процессы Windows-файрвола. VSkimmer ищет процессы примерно по такому же алгоритму, что и Dexter, однако автор не стал изобретать велосипед и для поиска использовал регулярные выражения.

Поиск Track2 c помощью регулярного выражения
Поиск Track2 c помощью регулярного выражения

Однако помимо всего прочего есть в vSkimmer и интересный функционал. Очевидно, что основная трудность для злоумышленников — заразить компьютер, который используется в POS-терминале. С такого компьютера обычно не ходят по сайтам, а иногда на нем и вовсе нет интернета. В таком случае заразить компьютер можно с помощью инсайдера в организации. Именно такой режим работы был добавлен в vSkimmer. Если у зараженного компьютера отсутствует интернет-соединение, то все накопленные данные вредонос записывает в специальный файл. Когда же к компьютеру подключается USB-накопитель с меткой тома KARTOXA007, то vSkimmer копирует всю собранную информацию на накопитель в файл dmpz.log.

vSkimmer проверяет метку тома у диска
vSkimmer проверяет метку тома у диска

У автора данной малвари хорошее чувство юмора — видимо, этим можно объяснить, что в качестве User-Agent’а при подключению к серверу используется значение PCICompliant/3.33. PCI Compliant — именно так называют терминал, который полностью соответствует стандартам безопасности данных индустрии платежных карт.

 

Так ли новы идеи этих вирусов?

Несмотря на весь шум, поднятый в СМИ и интернете в начале 2013 года, похожая схема атаки была продемонстрирована в 2010 году сотрудниками компании Trustwave на конференции DEF CON 18. В своем докладе «Malware Freakshow 2» сотрудники Trustwave продемонстрировали малварь, способную извлекать из памяти приложений track1/track2. Слайды презентации доступны по ссылке.

Заключение

Несмотря на свою примитивность, рассмотренные вредоносные программы успешно справляются с возложенными на них задачами. Однако в будущем мы можем стать свидетелями использования более изощренного ПО, направленного на хищение данных с POS-терминалов.

 

История успеха

В мае 2011 года было выдвинуто официальное обвинение четырем гражданам Румынии в том, что они похищали данные о пластиковых картах жителей США, используя POS-терминалы. Согласно обвинению, с 2008 года по май 2011-го румынские злоумышленники проникли на более чем 150 POS-терминалов одной из сетей ресторанов быстрого питания, а также на POS-терминалы других компаний. Всего хакерам удалось похитить более 80 тысяч данных о пластиковых картах. Для того чтобы установить свое вредоносное ПО на POS-терминалы, хакеры подбирали пароли к pcAnywhere — программе, использующейся для удаленного управления компьютером.

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

Check Also

Порка распорки. Разбираем свежую уязвимость в фреймворке Apache Struts 2

Сегодня мы вернемся к Apache Struts, популярному веб-фреймворку, который за последнее врем…