Дело о скиммере Пипка

Защита браузерных приложений от вредоносных программ — часть 1.

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

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

Фон

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

В сентябре 2019 года программа Visa Payment Fraud Disruption (PFD) eCommerce Threat Disruption (eTD) определила новый скиммер JavaScript, который нацелен на платежные данные, введенные в платежные формы на веб-сайтах продавцов электронной коммерции. Ему дали имя Пипка.

Вот ссылка на PDF-файл о Пипке, доступный на сайте VISA:

https://usa.visa.com/dam/VCOM/global/support-legal/documents/pfd-identifiers-new-javascript-skimmer.pdf

Как описано в VISA pdf:

«Самым интересным и уникальным аспектом Pipka является ее способность удалять себя из HTML-кода после успешного выполнения. Это позволяет Pipka избежать обнаружения, поскольку он отсутствует в HTML-коде после первоначального выполнения. Это функция, которая ранее не использовалась в дикой природе, и знаменует собой значительный прогресс в скимминге JavaScript '.

Точно так же в другой статье от 18 ноября 2019 года говорится почти то же самое.



Подробнее о сокрытии кода.

Давайте рассмотрим эту концепцию сокрытия кода и посмотрим, сможем ли мы обнаружить эту вредоносную программу даже после того, как она скроется. Нам необходимо решить следующее.

После того, как Пипка удалит себя, действительно ли он скрыт, или он прячется где-то на веб-странице, но мы не ищем его в нужном месте или в нужном месте.

Из фрагментов файла VISA PDF мы можем создать часть вредоносного ПО Pipka в виде тестовой HTML-страницы и добавить дополнительный скрипт, чтобы проверить концепцию удаления скрипта. Вот тестовая страница. (Я также призываю читателей посетить приведенные выше и другие ссылки для получения дополнительной информации.)

Теперь, после выполнения, давайте посмотрим на журналы консоли браузера Chrome и проверим, видим ли мы скрипт Pipka на HTML-странице, созданной последним оператором console.log выше, который должен вернуть нашу исходную страницу.

(Сравните предыдущее изображение с изображением ниже)

В порядке. Пока все хорошо, но он все еще там, где-то притаился?.

Анализ и обнаружение

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

После запуска приведенного выше фрагмента мы получаем.

Бинго все еще там!!!

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

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

Но кажется логичным предположить, что содержимое скрипта также дополнительно сохраняется функционально или объектно в другой части внутренней памяти браузера. Давайте не будем вдаваться в вопрос о том, компилируется ли Javascript, интерпретируется или JIT, потому что это не имеет отношения к данной статье.

Удаление тега скрипта не обязательно означает удаление функциональности скрипта! Вам нужно искать добавленные во время выполнения объекты и функции, используемые вредоносной программой, а не содержимое ‹HTML› или любых других тегов.

Таким образом, даже после удаления скрипта вредоносное ПО Pipka все еще существует и работает!

Теперь, так ли легко обнаружить это вредоносное ПО, используя описанную выше технику? . Ответ определенно Нет!. Объект окна содержит буквально тысячи объектов. Причина, по которой мы нашли вышеизложенное таким простым, заключалась в том, что мы немного жульничали. Да, мы пропустили поиск среди тысяч переменных, существующих на обычной странице, потому что знали имя переменной вредоносного ПО: _0x1bb3a3. Однако обратите внимание, что вредоносное ПО может динамически генерировать разные имена при различных атаках. Представьте себе белый список и отслеживание тысяч имен переменных по мере того, как скрипт запускается на любой реальной веб-странице. Это нецелесообразно, особенно для сторонних импортированных скриптов.

Можем ли мы остановить казнь Пипки даже после того, как она попадет внутрь?

Ответ определенно Да!. Однако для его остановки требуются другие методы, которые станут темой будущих статей.

В следующей статье мы рассмотрим «Скиммер Magcart», чтобы узнать, как он работает и как его можно остановить во время выполнения. Те же принципы применимы и к Пипке.

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