Этой статьей мы начинаем серию публикаций о неуловимых малвари. Программы для взлома, не оставляющие следов атаки, известные также как 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-малвари без лишних вводных слов и подготовки.

Комментарии (12)


  1. Cerberuser
    17.06.2019 19:32

    Мне вот интересно, что это за люди, которые скрывают расширения файлов и при этом не считают подозрительным файл, у которого оно не скрыто?..


    1. n0rbert
      18.06.2019 04:45

      Простые невнимательные офисники. Условная баба Зоя не будет вдаваться в подробности, настроено ли у нее отображение расширений (по умолчанию — нет), увидела doc — ааа значит документ Word. И всё.


      1. Cerberuser
        18.06.2019 05:23

        Так я к тому, что она, по идее, не должна видеть этот самый doc в нормальных условиях. А значит, цепочка "doc — значит, Word" не должна возникать.


        1. n0rbert
          18.06.2019 05:37

          Офисный мыШ стандартный не задумывается, должен он видеть или нет расширение файла. И, зачастую, его даже отличие значка от соседнего «правильного» документа не смущает. Внимательных и аккуратных в обращении с интернетом/почтой сотрудников меньше, чем хотелось бы. Про домашних пользователей вообще молчу.
          Я в свое время в большой госконторе админил и в защите информации работал, насмотрелся.


          1. Cerberuser
            18.06.2019 05:42

            Я, видимо, не очень понятно объясняю свою мысль, спрошу чуть иначе: откуда этот самый "стандартный офисный мыш" вообще знает, что такое ".doc"?


            1. n0rbert
              18.06.2019 06:06

              Ну слова Микрософт Ворд, Эксель, док, икслс они, как правило, в рамках офисной деятельности осаваивают…


            1. Dmitriy_CRusHer
              18.06.2019 11:43

              Знают, потому что им нужно банально сохранять документ. И этот самый «мыш», прекрасно знает, что такое .doc и .docx


              1. ksr123
                20.06.2019 10:36

                Они знают разве что кнопку "сохранить". И то зачастую сохраняются только в самом конце работы, но сейчас спасает автосохранение.


                1. Dmitriy_CRusHer
                  20.06.2019 10:40

                  Не сказал бы. Те же бухи сейчас знают во что надо сохранить файл. тот же экспорт из 1с в .xls. Даже больше скажу, они знают, что такое TeamViewer и даже спокойно могут сказать id.


            1. alexanster
              18.06.2019 12:05

              «стандартный офисный мыш» и не знает, он тупо тычет во всё подряд, не пытаясь даже задуматься.
              Вот буквально недавно меня вызвали к президенту компании, который упорно пытался запустить с флешки .dll, хотя рядом лежал .exe. Мои жалкие попытки объяснить, что надо делать, разбивались о железный аргумент — «А зачем тогда он тут лежит?» Раз лежит, значит надо запустить.
              P.S. Это был какой-то вьювер результатов то ли томограммы, то ли ещё какого-то мед обследования.


  1. ormoulu
    17.06.2019 21:00

    Как говорится, все новое это хорошо забытое старое. Начинали с батников, пришли к повершеллу.
    Только настоящая fileless малварь и обфусцированные скрипты это несколько разные вещи, хоть и имеющие некоторые точки пересечения.


  1. teecat
    19.06.2019 13:50

    Программы для взлома, не оставляющие следов атаки, известные также как fileless («бестелесные», невидимые, безфайловые), как правило, используют PowerShell

    бестелесное вредоносное ПО это не святой дух, а код записанный не в виде файла, а скажем в реестр или за пределы файловой системы. Или извлекаемый из какого-то хранилища (не хранимый на диске непосредственно) и исполняемый непосредственно в памяти. Тоесть сигнатура у него есть и она выявляется в момент извлечения их хранилища или внедрения эксплойта
    Вы же говорите о скриптовых троянах. Файлах, использующих для вредоносной деятельности системные утилиты и компоненты. Типичный пример шифровальщики, использующие битлокер

    Обнаружить хакерскую деятельность без вредоносных файлов — сложно выполнимая задача, т.к. антивирусы и многие другие системы обнаружения работают на основе сигнатурного анализа
    .
    Вот как это достало. Сигнатурные антивирусы вымерли в момент появления onehalf. Но фразу эту пишут постоянно. Да ловля скриптов дело не простое, но их можно ловить и по сигнатурам и по поведению и по иным признакам

    сценарий Visual Basic обфусцируется так, что он свободно уклоняется от антивирусов

    Обфускация без полиморфизма возьмется сигнатурой. Вот с полиморфизмом да, сложно будет. А так да, задача решается в лоб — все образцы по сигнатурам в базу