Этой статьей мы начинаем серию публикаций о неуловимых малвари. Программы для взлома, не оставляющие следов атаки, известные также как fileless («бестелесные», невидимые, безфайловые), как правило, используют PowerShell на системах Windows, чтобы скрытно выполнять команды для поиска и извлечения ценного контента. Обнаружить хакерскую деятельность без вредоносных файлов — сложно выполнимая задача, т.к. антивирусы и многие другие системы обнаружения работают на основе сигнатурного анализа. Но хорошая новость состоит в том, что такое ПО все же существует. Например, UBA-системы, способные обнаружить вредоносную активность в файловых системах.
Когда я впервые начал изучать тему крутых хакеров, не использующих традиционные способы заражения, а лишь доступные на компьютере жертвы инструменты и программное обеспечение, я и не подозревал, что вскоре это станет популярным способом атаки. Профессионалы в области безопасности говорят, что это становится трендом, а пугающие заголовки статей – тому подтверждение. Поэтому я решил сделать серию публикаций на эту тему.
Великий и ужасный PowerShell
Я писал о некоторых из этих идей раньше в серии обфускации PowerShell, но больше исходя из теоретического представления. Позже я наткнулся на сайт для гибридного анализа, где можно найти образцы малвари, «отловленной» в дикой природе. Я решил попробовать использовать этот сайт для поиска образцов fileless-вредоносов. И мне это удалось. Кстати, если вы захотите отправиться в свою собственную экспедицию по поиску вредоносных программ, вам придется пройти проверку на этом сайте, чтобы они знали, что вы делаете работу как white hat специалист. Как блогер, который пишет о безопасности, я прошел ее без вопросов. Я уверен, вы тоже сможете.
Помимо самих образцов на сайте можно увидеть, что же делают эти программы. Гибридный анализ запускает вредоносное ПО в собственной песочнице и отслеживает системные вызовы, запущенные процессы и действия в сети, а также извлекает подозрительные текстовые строки. Для двоичных файлов и других исполняемых файлов, т.е. там, где вы даже не можете посмотреть на фактический код высокого уровня, гибридный анализ решает, является ли ПО вредоносным или просто подозрительным на основе его активности во время выполнения. И после этого уже оценивается образец.
В случае с PowerShell и другими образцами сценариев (Visual Basic, JavaScript и т. д.), я смог увидеть и сам код. Например, я наткнулся на такой PowerShell экземпляр:
Вы также можете запустить PowerShell в кодировке base64, чтобы избежать обнаружения. Обратите внимание на использование Noninteractive и Hidden параметров.
Если вы прочитали мои записи по обфускации, то вы знаете, что параметр -e указывает на то, что содержимое кодируется в base64. Кстати, гибридный анализ помогает также и с этим, декодируя все обратно. Еcли вы захотите попробовать декодировать base64 PowerShell (далее – PS) самостоятельно, нужно выполнить эту команду:
[System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($EncodedText))
Вникай глубже
Я декодировал наш PS-сценарий с помощью этого метода, ниже представлен текст программы, правда слегка мной модифицированный:
Заметьте, что скрип был привязан к дате 4 сентября 2017 и передавал сессионные cookies.
Я писал об этом стиле атаки в серии по обфускации PS, в которой кодированный в base64 скрипт сам загружает недостающие вредоносные программы с другого сайта, задействуя из библиотеки .Net Framework объект WebClient, чтобы сделать всю тяжелую работу.
Для чего это нужно?
Для программного обеспечения безопасности, сканирующего журналы событий Windows или файерволла, кодировка base64 предотвращает обнаружение строки «WebClient» по простому текстовому шаблону в целях защиты от выполнения такого веб-запроса. И так как все «зло» вредоносного ПО затем загружается и передается в наш PowerShell, этот подход таким образом позволяет полностью уклоняться от обнаружения. Вернее, это я так думал сначала.
Оказывается, с включением продвинутого логирования журнала Windows PowerShell (см. мою статью ) вы сможете увидеть загруженную строку в журнале событий. Я (как и другие ) считаю, что Microsoft следует включить данный уровень ведения журнала по умолчанию. Поэтому при включенном расширенном логировании мы увидим в журнале событий Windows выполненный запрос загрузки из PS скрипта по примеру, который мы разобрали выше. Поэтому имеет смысл его активировать, согласны?
Добавим дополнительные сценарии
Хакеры ловко скрывают атаку PowerShell в макросах Microsoft Office, написанных на Visual Basic и на других скриптовых языках. Идея заключается в том, что жертва получает сообщение, например, от службы доставки, с вложенным отчетом в формате .doc. Вы открываете этот документ, который содержит макрос, и в конечном итоге он сам запускает вредоносный PowerShell.
Часто сам сценарий Visual Basic обфусцируется так, что он свободно уклоняется от антивирусов и других сканеров вредоносных программ. В духе уже изложенного, я решил в качестве упражнения закодировать приведенный выше PowerShell в JavaScript. Ниже результаты моей работы:
Обфусцированный JavaScript, прячущий наш PowerShell. Реальные хакеры делают это на раз-два.
Это еще одна из техник, которую я встретил на просторах сети: использование оболочки Wscript.Shell для запуска кодированного PowerShell. Кстати, JavaScript сам по себе является средством доставки вредоносных программ. Многие версии Windows имеют встроенный Windows Script Host, который сам умеет запускать JS.
В нашем случае, вредоносный скрипт JS вложен как файл c .doc.js расширением. Windows, как правило, показывает только первый суффикс, поэтому он будет отображаться жертве как документ Word.
Значок JS отображается только в иконке в виде свитка. Неудивительно, что многие люди будут открывать это вложение, думая, что это Word-документ.
В моем примере я изменил приведенный выше PowerShell, чтобы загрузить сценарий с моего веб-сайта. Удаленный сценарий PS просто печатает «Evil Malware». Как видите, он совсем не злой. Конечно, реальные хакеры заинтересованы в получении доступа к ноутбуку или серверу, скажем, через командую оболочку. В следующей статье я покажу, как это сделать, используя PowerShell Empire.
Надеюсь, что для первой ознакомительной статьи мы не слишком глубоко погрузились в тему. Теперь я позволю вам перевести дух, и в следующий раз мы начнем разбирать реальные примеры атак с использованием fileless-малвари без лишних вводных слов и подготовки.