Приключения неуловимой малвари, часть II: cкрытные VBA-cкрипты (мы тут)
Я поклонник сайта гибридного анализа (hybrid analysis, далее HA). Это своего рода зоопарк вредоносов, где вы можете спокойно наблюдать за дикими «хищниками» c безопасного расстояния, не подвергаясь нападению. HA запускает вредоносное ПО в безопасных средах, записывает системные вызовы, создаваемые файлы и интернет-трафик, и выводит вам все эти результаты для каждого анализируемого образца. Таким образом, вы можете не тратить свое время и силы, самостоятельно разгадывая запутанный код, а сразу же понять все намерения хакеров.
Примеры HA, которые привлекли мое внимание, используют либо закодированный JavaScript или скрипты Visual Basic для Приложений (VBA), встроенные как макрос в документы Word или Excel, и прикладываемые к фишинговым письмам. При открытии эти макросы запускают сеанс PowerShell на компьютере жертвы. Хакеры обычно отправляют в PowerShell поток команд в кодировке Base64. Это все сделано для того, чтобы сделать атаку трудной для обнаружения веб-фильтрами и антивирусным ПО, реагирующими на определенные ключевые слова.
К счастью, HA автоматически декодирует Base64 и сразу показывает все в читаемом виде. По сути, вам не нужно фокусироваться на том, как эти сценарии работают, потому что вы сможете видеть полный вывод команд для запускаемых процессов в соответствующем разделе HA. См. пример ниже:
Гибридный анализ перехватывает команды, закодированные в Base64, отправляемые в PowerShell:
… и затем декодирует их для вас. #волшебно
В предыдущем посте я создал свой собственный слегка обфусцированный JavaScript контейнер для запуска сеанса PowerShell. Затем мой сценарий, как и множество вредоносных программ на основе PowerShell, загружает следующий сценарий PowerShell с удаленного веб-сайта. Тогда в качестве примера я загружал безвредный PS, печатающий сообщение на экране. Но времена меняются, и теперь я предлагаю усложнить сценарий.
PowerShell Empire и Обратный Шелл
Одна из целей этого упражнения, показать, как (относительно) легко хакер может обойти классические средства защиты периметра и антивирусы. Если ИТ-блогер без навыков программирования, такой как я, за пару вечеров может создать необнаруживаемый вредонос (fully undetected, FUD), представьте себе возможности заинтересованного в этом юного хакера!
И если вы являетесь лицом, обеспечивающим ИТ-безопасность, но ваш руководитель не осознает возможных последствий этих угроз, просто покажите ему эту статью.
Хакеры мечтают получить прямой доступ к ноутбуку или серверу жертвы. Сделать это очень просто: все, что требуется хакеру, – заполучить несколько конфиденциальных файлов на ноутбуке генерального директора.
Как-то я уже писал о пост-эксплуатационной среде выполнения PowerShell Empire. Давайте вспомним, что это такое.
По сути, это инструмент для тестирования на проникновение на основе PowerShell, который, среди многих прочих функций, позволяет легко запускать обратный шелл. Вы можете изучить его подробнее на домашнем сайте PSE.
Давайте проведем маленький эксперимент. Я настроил безопасную среду для тестирования вредоносных программ в облаке Amazon Web Services. Вы можете последовать моему примеру, чтобы быстро и безопасно показать работающий пример данной уязвимости (и не быть уволенным за запуск вирусов внутри периметра предприятия).
Если вы запустите консоль PowerShell Empire, то увидите примерно следующее:
Сперва вы запускаете процесс listener на вашем хакерском компьютере. Введите команду «listener», и укажите IP-адрес вашей системы с помощью «set Host». Затем запустите процесс listener командой «execute» (ниже). Таким образом вы запустите со своей стороны ожидание сетевого соединения от удаленного шелла:
Для другой стороны вам нужно будет сгенерировать агентский код, введя команду «launcher» (см.ниже). Это сгенерирует PowerShell-код для удаленного агента. Обратите внимание, что он кодируется в Base64, и представляет собой вторую фазу полезной нагрузки. Другими словами, мой JavaScript-код теперь вытянет этого агента для запуска PowerShell вместо безобидного вывода текста на экран и подключится к нашему удаленному серверу PSE для запуска обратного шелла.
Магия обратного шелла. Эта закодированная команда PowerShell соединится с моим listener и запустит удаленную оболочку.
Чтобы показать вам этот эксперимент, я взял на себя роль невинной жертвы и открыл Evil.doc, тем самым запустив наш JavaScript. Помните первую часть? PowerShell был настроен так, чтобы его окно не всплывало, поэтому жертва не заметит ничего необычного. Тем не менее, если вы откроете Диспетчер задач Windows, вы увидите фоновый процесс PowerShell, который все равно у большинства не вызовет никакой тревоги. Потому что это обычный PowerShell, не правда ли?
Теперь, когда вы запускаете Evil.doc, скрытый фоновый процесс будет подключаться к серверу с PowerShell Empire. Надев белую шляпу хакера-пентестера, я вернулся в консоль PowerShell Empire, и теперь вижу сообщение, что мой удаленный агент активен.
Затем я ввел команду «interact», чтобы открыть оболочку в PSE – и вот он я! Короче говоря, я взломал сервер Taco, который сам и настроил когда-то.
То, что я только что продемонстрировал, не требует от вас так уж много работы. Вы спокойно можете проделать все это за обеденный перерыв в течение одного-двух часов, чтобы улучшить свои знания инфобезопасности. Также это отличный способ понять, как хакеры обходят защиту периметра внешней безопасности и скрытно располагаются в ваших системах.
ИТ-менеджеры, считающие, что они построили нерушимую защиту от любого проникновения, вероятно также найдут это познавательным – ну, если вы, конечно, сможете их убедить посидеть рядом с вами достаточно долго.
Вернемся к реальности
Как я и предполагал, реальный невидимый для рядового пользователя взлом – это просто вариация того, что я только что описал. Для сбора материала к следующей публикации я начал искать образец на HA, который работает таким же образом, как и придуманный мой пример. И мне не пришлось его долго искать – на сайте много вариантов подобной техники атаки.
Вредоносная программа, которую я в конечном итоге нашел на HA, это скрипт VBA, который был встроен в документ Word. То есть мне не нужно даже подделывать расширение doc, это вредоносное ПО действительно самый обычный с виду документ Microsoft Word. Если вам интересно, то я выбрал вот этот образец, называемый rfq.doc.
Я быстро узнал, что зачастую вы не сможете напрямую вытащить из документа вредоносные сценарии VBA. Хакеры сжимают и прячут их, и они не видны во встроенных макро-инструментах Word. Вам понадобится специальный инструмент для его извлечения. К счастью, я наткнулся на сканнер OfficeMalScanner Фрэнка Болдуина. Спасибо тебе, Фрэнк.
Используя этот инструмент, я смог вытащить сильно запутанный код VBA. Он выглядел как-то так:
Обфускация была сделана профессионалами своего дела. Я был впечатлен!
Нападавшие действительно хороши в запутывании кода, не то что мои усилия в создании Evil.doc. Ну и ладно, в следующей части мы достанем наши отладчики VBA, слегка углубимся в этот код и сравним наш анализ с результатами HA.