Вирусы атакуют! Как легитимный функционал приводит к заражению устройства
Сегодня разберем один необычный сценарий, при котором хакер сможет заставить Windows собственноручно устанавливать на себя вредоносное ПО.
Михаил Жмайло
Ведущий специалист CICADA8 по тестированию на проникновение
Самой популярной операционной системой для компьютеров считается Windows. Существует даже красивая инфографика, наглядно показывающая нам становление системы на вершину пьедестала.
Именно Windows-устройства чаще всего атакуют хакеры, впрочем, по этой причине наиболее распространенные и серьезные защитные решения нацелены на «оконную» систему.
Сегодня разберем один необычный сценарий, при котором хакер сможет заставить Windows собственноручно устанавливать на себя вредоносное ПО.
ClickOnce
Этот метод будет основываться на использовании встроенного механизма системы, имя ему — ClickOnce. Из названия понятно, что куда-то достаточно единожды кликнуть. Но куда?
Технология позволяет распространять приложения максимально просто и незамысловато. Разработчики могут поместить специальные файлы-манифесты где им удобно: веб-ресурсы, общие сетевые папки, флешка. Это удобное решение проблемы доставки программного обеспечения клиенту. Отмечу, что целевые приложения называются развертки (Deployments).
Вместе с развертками идут файлы-манифесты. Они представляют собой маленькие XML-ки, размером буквально 10 КБ. При нажатии на этот файл Windows автоматически считает все необходимые для нее данные и самостоятельно подгрузит приложение, которое распространяют разработчики — отсюда и название ClickOnce.
Тем не менее, этот механизм используется и злоумышленниками. Почему же он стал набирать популярность и каковы ключевые отличия от до боли знакомого фишинга через макросы Microsoft Office? Давайте разбираться.
Visual Studio
Visual Studio — популярная IDE для программистов, она имеет функционал по созданию ClickOnce-сборок. Именно через нее злоумышленники развертывают свои вирусы. Мы же, в целях демонстрации, будем создавать обычную программу, безобидную :)
Итак, пусть наше приложение имеет следующий незамысловатый код.
using System; using System.IO; namespace Virus { internal class Program { static void Main(string[] args) { File.WriteAllText("C:\\Users\\Michael\\Desktop\\1.txt", "HELLO WORLD"); } } }
Именно этот код исполнится на клиенте. Стоит отметить, что все развертываемые программы должны иметь цифровую подпись. Впрочем, это не проблема, так как подпись можно сделать самостоятельно.
Далее идет несколько затяжной процесс выставления нужных настроек, чтобы Visual Studio знала, на какой сервер раскатывать сборку, если все дословно описывать, то можно уснуть :) Тем более, иностранные коллеги уже сделали это тут и тут.
Закончив настройку, злоумышленники могут развертывать целевое приложение буквально в два клика: доcтаточно нажать на кнопки Сборка -> Пересобрать решение, Сборка -> Опубликовать
На веб-сервере, в свою очередь, появятся нужные файлы.
Злоумышленнику остается лишь найти способ заставить жертву нажать на файл .application — всю остальную работу сделает Windows.
Я записал наглядную демонстрацию работы этого механизма здесь.
Ломаем хакера
Казалось бы, что может пойти не так? Очень часто вместе с развертыванием ClickOnce получается обнаружить файл .config. Его имя — имя приложения. Например, Virus.exe.config-> Virus.exe. Внутри этого файла очень часто автоматически заворачиваются всякие служебные данные, строки подключения, API-ключи. Злоумышленник может даже не подозревать о том, что он выставляет на всеобщее обозрение свою конфиденциальную информацию. Например, однажды был кейс, при котором внутри файла конфигурации обнаружились учетные данные от админ-панели стиллера :D
Защищаемся
Во-первых, явным показателем подозрительного ПО может служить иконка. Если происходит взаимодействие с каким-то ранее неизвестным сервером, то ClickOnce любезно спросит, желаем ли мы установить софт.
Эта иконка содержит информацию, что издатель неизвестен. Оно логично — злоумышленники сделали собственный сертификат, которому никто не доверяет.
Во-вторых, следует внимательно относиться к распространяемым в общих ресурсах файлам .application. Не стоит скачивать неизвестные развертывания себе на устройства.
К счастью, современные средства защиты уже достаточно безошибочно научились определять вредоносные приложения. Впрочем, на антивирус надейся, а сам не плошай :)