Curious Basic-2
АрхивВ первой статье о "любопытном Basic‘е" я попытался объяснить, как, используя концептуальные особенности Windows, превратить совокупность полезных программ в слаженную банду, действующую против владельца компьютера. Главная роль в этом отводится инструменту, который еще совсем недавно рассматривался только в качестве учебного пособия.
В первой статье о «любопытном Basic‘е» я попытался объяснить, как, используя концептуальные особенности Windows, превратить совокупность полезных программ в слаженную банду, действующую против владельца компьютера. Главная роль в этом отводится инструменту, который еще совсем недавно рассматривался только в качестве учебного пособия.
Visual Basic (VB) - предмет особой гордости компании Microsoft. За короткий срок ей удалось превратить язык-игрушку в мощнейшее средство разработки приложений. Количество саркастических комментариев C++-программеров по адресу VB ясно показывает, что этому языку удалось занять место под солнцем. Да, быстродействие и эффективность кода C/C++ недостижимы для VB-приложений. Но в современном мире, где оперативная память измеряется сотнями мегабайт, емкость жестких дисков - десятками гигабайт, а тактовая частота процессоров перевалила за гигагерц, простота и скорость разработки во многих случаях оказываются решающими факторами. К тому же Microsoft, создав Visual Basic for Application (VBA) и VBScript (VBS), позволила пользователям неограниченно расширять функциональность приложений по своему вкусу.
Идея единого механизма автоматизации для всех приложений оказалась очень привлекательной. Лидеры мира software, среди которых Corel, AutoDesk и множество других, ограничили усилия по разработке собственных средств, включив в свои продукты VBA. Еще более укрепляет позиции Basic‘а COM-архитектура приложений для Windows. Компания Microsoft разрабатывала эту модель так, чтобы программистам на VB было как можно проще использовать язык. Хотя для достижения максимальной эффективности коммерческие COM-серверы пишутся преимущественно на C++, клиентские приложения - в силу своей относительной простоты - чаще разрабатываются на VB.
COM-архитектура и автоматизация на основе VBA связывают приложения - как в одном компьютере, так и в сети любого уровня, - в одно целое. Несомненное достоинство этого - возможность включать готовые решения в пользовательские проекты, не утруждая себя изобретением велосипеда. При этом упор делается на алгоритмы решения поставленных проблем, значительно сокращаются сроки разработки и экономятся немалые деньги (ведь труд IT-специалистов стоит очень дорого). Ну и, наверное, самое главное: конечные пользователи остаются в рамках привычных им сред.
Темная сторона оказывается не менее впечатляющей. COM-архитектура облегчает включение в приложения «черных ходов». Когда в коллективное пользование предоставляются сотни и тысячи функций, скрыть среди них люк не представляет труда. Единственной гарантией порядочности служит репутация производителя (слабое утешение!). В СУБД InterBase от Borland «черный ход» для получения административных привилегий просуществовал с 1994 года, и нашли его только после доступа к открытому коду в конце прошлого года. Эта СУБД применялась в компаниях Boeing и Motorola, на фондовых биржах. Воспользовался ли кто-нибудь этим люком по назначению - так и останется тайной.
Но самые захватывающие перспективы открывает программирование приложений извне. VBA сохранил от «детского» Basic‘а все свойства универсального языка программирования высокого уровня. Он имеет доступ к многочисленным прикладным интерфейсам (API). Поддерживаются сетевые функции. COM связывает задачи воедино. Через VBS реализуется управление операционной системой. Посему COM-автоматизированное приложение можно перепрограммировать, перекрыв даже внутренние функции - так, что отцы-разработчики не узнают собственное творение.
Этот футурологический кибербульон, находящийся в состоянии «исполнителя желаний» (wishmaker; позволю себе ввести такой термин, поскольку он, к счастью, сам действовать еще не может), разъедает изнутри систему безопасности Windows NT (в Win9x таковой просто нет). Проектировщики, видимо, предполагали, что основную угрозу представляет человек. Они тщательно выстроили парольные заборы и распределили полномочия между пользователями в зависимости от их надежности. Злонаправленные коды (malicious code) предполагалось обезвреживать антивирусами, а несанкционированное любопытство пользователей контролировать аудитом. Надежность же самих пользователей - это уже забота не производителей ПО. Против измены рецептов нет.
В эту систему не вписываются только два фактора. Первый: благодаря глобальной системе электронной почты злоумышленник имеет неограниченное число попыток безнаказанно проникнуть в интересующую его сетку или компьютер. Внедрение прицепленного троянского кода из спецоперации превращается в рулетку. Обеспечивается это так называемым социальным инжинирингом, то есть мотивацией получателя прочитать письмо и открыть вложения. Примеры вы можете видеть каждый день, и даже весьма символические: в начале апреля парламент Австралии собрался сажать на десять лет распространителей вирусов, а уже через месяц его сеть из-за любопытства служащих «подорвалась» на порновирусе. Второе: COM-автоматизация позволяет превратить сумму разрешенных действий в действие незаконное. Например, находим проект важного, многообещающего контракта и отсылаем его по e-mail… конкурентам 1.
Стремясь разрядить ситуацию, Microsoft решила запретить в своих почтовых программах какой бы то ни было способ открытия целой группы потенциально опасных файлов-вложений (exe, vbs и т. п.). Теперь вся ответственность ляжет на пользователя. Знаешь, что опасно, но вытащил вложение и открыл - отвечай сам.
Каков же итог? Меры безопасности, о которых рассказывается в том числе и на сайте «SoftТерры», - межсетевые экраны (firewall), анализаторы трафика, антивирусы и антитрояны, - обеспечивают снижение риска проникновения злонамеренных кодов, но не решают проблему непредусмотренного использования легальных средств. Пока, из-за молодости, непривычности и непереносимости на другие платформы COM-технологий, этот подход основательно эксплуатируют только почтовые вирусы, проваливаясь на интенсивности размножения. Что произойдет, если этим механизмом заинтересуются создатели средств удаленного администрирования, лучше и не загадывать.
От COM-автоматизации отказаться сегодня нереально - слишком много денег туда вложено. Обеспечить действующую автоматическую проверку надежности кодов в ближайшее время тоже нельзя - алгоритмов можно реализовать бесконечное число. Значит, нужно внедрять систему, способную различать алгоритмы на очень высоком уровне абстракции (искусственный интеллект?). А ежели его перемкнет…
[i40042]
1 (обратно к тексту) - О почте уже подробно говорилось в первой части, а поисковую систему тоже можно одолжить в Office (пример кода в полной версии статьи).