Некоторые компоненты GUI удобны как для пользователя, так и для взломщика
Считается, что графический интерфейс пользователя (Graphic User Interface, GUI) упрощает работу пользователя с компьютером, поскольку делает ее наглядной и удобной. Однако это же может сказать и взломщик, который пытается проникнуть в компьютер пользователя. Для него GUI также предоставляет массу интересных возможностей по управлению компьютером, в том числе и удаленному. В частности, через графический интерфейс приложения можно заставить пользователя выполнить такие действия, которые он делать не собирался: зайти на сайт-ловушку, открыть почтовое сообщение с троянской программой или просто отключить защиту какого-нибудь приложения. Эта техника называется социальной инженерией. Однако нападающий может пользоваться GUI без обращения за помощью к пользователю. Дело в том, что графический интерфейс управляется событиями, которые порождают различные компоненты компьютера: манипулятор мышь, клавиатура, таймер и некоторые другие. Эти события передаются в графическую оболочку Windows, а потом — активному приложению, в котором вызываются функции для обработки произошедшего в графическом интерфейсе события. Однако современные языки сценариев позволяют эмулировать определенные последовательности событий графического интерфейса, которые приложение просто не сможет отличить от реальных и обработает их в полной уверенности, что так хочет сам пользователь. В то же время пользователь при этом может и не подозревать, что его компьютером фактически управляет загруженный с сайта-ловушки сценарий.
Наиболее часто в качестве языка для составления таких сценариев «виртуального пользователя» используется JavaScript, который, будучи интегрирован в Web-страницу, будет исполнен браузером, как только эта страница будет загружена. JavaScript характерен тем, что его очень часто используют разработчики Web-сайтов для внедрения интерактивных элементов на своих ресурсах, поэтому невозможно просто выключить исполнение JavaScript. Сейчас начинает приобретать популярность и другой интерпретируемый язык — Visual Basic Scripting (VBS), который также можно использовать для реализации нападений на графические компоненты приложения. Главное, что эти языки позволяют порождать события графической подсистемы.
Как же реализуется атака на GUI приложения? Для этого можно использовать как события мыши, так и нажатия на горячие клавиши. В первом случае сценарий перемещает курсор мыши по графическому интерфейсу и эмулирует нажатия на клавиши. Таким образом, перемещаясь по меню и выбирая его пункты или же нажимая на активные элементы диалогов, «виртуальный пользователь» может изменить конфигурацию приложения, упрощая себе задачу проникновения на атакуемый компьютер.
В качестве примера такой атаки можно привести недавнее сообщение турецкого исследователя Фаруха Мавитуна, который опубликовал набор сценариев для выключения многих персональных сетевых экранов при помощи их графических интерфейсов. Он использовал сценарий на языке VB.NET, с помощью которого реализовал как метод управления мышью, так и работу с горячими клавишами.
Защититься от нападений такого типа крайне сложно, поскольку «виртуального пользователя» очень тяжело отличить от реального. Тем не менее сценарий всегда использует одну и ту же последовательность команд, в то время как пользователь согласует свои действия с изображением на экране компьютера. Поэтому разработчикам приложений стоит для изменения наиболее критичных настроек использовать какие-нибудь непредсказуемые элементы, например дать пользователю возможность вводить пароль, как это, например,.
Более общим методом защиты от подобных нападений является контроль поведения сценариев JavaScript и VBS. Специальными методами можно ограничить возможности этих технологий по влиянию на графические интерфейсы приложений, блокируя вызов соответствующих функций. Такие методы могут быть реализованы в специальном поведенческом анализаторе. Такой анализатор позволяет защитить от угрозы со стороны GUI все приложения, хотя и приведет к определенному замедлению и исключительным ситуациям в работе интерпретаторов. Сейчас технологии анализаторов поведения начинают активно развиваться; опубликованные эксплойты, скорее всего, еще больше подхлестнут этот процесс.