Угроза потерять немалые деньги из-за того, что злоумышленник украл пароль и логин от учетной записи онлайн-банкинга, в настоящее время очень актуальна. Чтобы бороться с воровством денег через онлайн-системы управления банковским счетом многие банки взяли на вооружение usb-устройства. Чаще всего используют usb-токены (или usb-брелоки) и кард-ридеры. Когда пользователь проводит через интернет какую-либо транзакцию, сайт банка требует подтвердить, что эту транзакцию проводит именно хозяин счета. USB-токен или кард-ридер (после проверки уникальной карточки клиента) отправляет интернет-системе банка специальный код, который и является подтверждением.
Казалось бы, все безопасно: даже если преступник украдет логин и пароль у пользователя онлайн-банкинга, без кард-ридера или брелока он не сможет провести операцию по переводу денег. Но, как говорится, не мытьем, так катаньем — злоумышленники придумали, как обойти и такую систему защиты. Некоторые вредоносные программы вынуждают самого пользователя подтверждать операции по переводу денег со своего счета на счет злоумышленника. Как это делается, покажем на примере известного троянца ZeuS.
Этот троянец, заразив систему пользователя, проверяет все данные, которые проходят через веб-браузер. Он может изменять эти данные, например, добавляя вредоносный код в код скачанной пользователем странички. В результате пользователь увидит в окне браузера уже измененную троянцем версию сайта.
Для начала опишу, как работает система управления счетом без вмешательства троянца. Пользователь вводит свой логин и пароль в полях странички онлайн-банкинга. Если логин и пароль верны, система онлайн-банкинга допускает пользователя к разделу управления его банковскими счетами. После того, как пользователь попросит отправить средства, система банка потребует подтвердить это действие личной карточкой клиента через кард-ридер, который должен быть подключен к компьютеру пользователя. Так задумано разработчиками системы.
Вот какой ответ на это есть у злоумышленников.
Оригинальная начальная страничка сайта онлайн-банкинга выглядит следующим образом:
Оригинальная страничка сайта банка с напоминанием
На ней сообщается, что кард-ридер не требуется для входа в систему. Теперь посмотрим, как та же страничка выглядит на зараженной ZeuS машине:
Измененная ZeuS страничка банка уже без напоминания
В файле конфигурации ZeuS указан адрес начальной страницы банка, и троянец в соответствии с инструкциями меняет код загружаемой страницы, таким образом что пользователь уже не видит на ней важной информации про кард-ридер. Кроме того, в код добавляются ссылки якобы на скрипт, размещенный на сайте банка.
Код страницы банка, измененный ZeuS
На самом деле никакого такого скрипта на сайте банка нет. Обращение обозревателя по этой ссылке затем перехватывается другой функцией троянца.
В файле конфигурации ZeuS злоумышленник указывает, какие адреса или данные заменять. Например, такая строчка в файле конфигурации
Указание для троянца, что и чем заменять на зараженном компьютере
означает, что если обозреватель запросит первый из адресов, приведенных в строке, то произойдет обращение не к запрашиваемому адресу, а к адресу, который стоит в строке вторым. В итоге браузер пользователя будет обрабатывать и показывать в окне уже не оригинальную страницу онлайн-банкинга, а страницу с «довеском» от ZeuS, в частности, с внедренным вредоносным скриптом.
Пошагово опишем порядок действий этого скрипта.
Если авторизация пользователя прошла успешно, то злоумышленнику отправляются перехваченные пользовательские данные — логин, пароль и пин-код (чтобы получить пароль и пин-код, ZeuS заблаговременно в код странички добавляет свою веб-форму, где требует от пользователя ввести эти данные).
Клиент банка, введя свои данные для входа в систему, ждет появления странички управления своим счетом, но скрипт задерживает отображение этой страницы в окне браузера. Чтобы у пользователя не возникло вопросов, почему переход к управлению счетом не происходит, вредоносный скрипт выводит на экран компьютера сообщение: «Требуется авторизация. Пожалуйста, подождите, пока мы проверим конфигурацию вашей системы, чтобы обеспечить дополнительную безопасность. Это может занять до 60 секунд»:
Сообщение, выводимое вредоносным скриптом
Между тем, вход уже осуществлен, и пока клиент банка ждет результатов «проверки конфигурации», вместо него в системе распоряжается вредоносный скрипт, эмулируя действия хозяина счета.
У пользователя с одной учетной записью может быть связано несколько банковских счетов. В таком случае скрипт определяет счет, на котором лежит максимальная сумма денег. Пробегая по ссылкам на страницах, скрипт попадает на страницу проведения платежей.
Чтобы добавить нового получателя, скрипт эмулирует клик на соответствующую ссылку на страничке:
Эмуляция перехода в раздел добавления нового получателя средств
Командный центр троянца передает детальную информацию о конкретном платеже: имя получателя, счет получателя, Sort Code, назначение перевода, комментарий и, конечно, сумма денег. Этими данными заполняется веб-форма перевода.
После того, как получатель определен, можно приступать к проведению транзакции. Осталось самое главное: пользователь должен подтвердить перевод своей карточкой через кард-ридер.
Все описанные выше действия скрипт выполняет довольно быстро. Пользователь в это время ждет результатов якобы проверки конфигурации системы. Во время этой «проверки» ему и выводится сообщение: «чтобы продолжить вход в систему, пожалуйста, подтвердите свою личность с помощью кард-ридера».
Текст требования, вводящего в заблуждение пользователя, в коде скрипта
Троянец в самом начале спрятал напоминание, что кард-ридер не требуется для входа в систему, и очень вероятно (ведь пользователь уверен, что получил сообщение от банка), что заветная карточка будет вставлена в кард-ридер. Если все проходит по плану злоумышленника, его скрипту остается только сделать последнее подтверждение, нажав на кнопку «Make payment» («провести платеж»).
Деньги ушли…
После проведения транзакции, в результате которой пользователь потеряет свои деньги, скрипт скрывает все данные о переводе: изменяет баланс, так что пользователь видит ожидаемую сумму на своем счету, скрывает добавленного скриптом нового получателя, скрывает информацию о проведении платежа в разделе исходящих платежей и т.п. Соответственно, какое-то время пользователь даже не заподозрит кражи.
Несмотря на то, что антивирусы постоянно совершенствуются, а банковские онлайн-системы модернизируются, мешая злоумышленникам приспособиться к системе, вирусописатели, со своей стороны, предпринимают серьезные усилия в погоне за наживой. Такая непростая ситуация требует от клиентов банков не терять бдительности.
Если при вручение вам usb-токена или кард-ридера с карточкой в отделении банка вам сказали, что эти устройства нужны только для подтверждения денежных операций, то их надо использовать исключительно в таких случаях, от кого бы ни исходили требования что-либо подтвердить, и как бы правдоподобно эти требования не выглядели.
Вредоносный Javascript vs. кард-ридера