Если такие понятия как DFIR, Threat Hunting, Security Monitoring, для вас не пустой звук, то эта статья будет вам интересна. Я расскажу про утилиту Velociraptor, которая часто помогает мне в работе. К моему удивлению, на Habr даже нет упоминания про нее, попробую это исправить. 

Velociraptor(github, docs) - согласно официальной документации это утилита для выполнения Digital Forensics and Incident Response (DFIR) задач. Но из практики можно сказать, что это настоящий швейцарский нож для сбора и анализа информации с конечных устройств (серверов и рабочих станций). 

Технические особенности

Прежде чем демонстрировать возможности этой программы, думаю, будет правильно упомянуть про основные технические особенности, чтобы у вас сложилось общее представление.

  • Обычно Velociraptor используется в клиент-серверной архитектуре, но также может быть использован в качестве offline коллектора с заранее определенной задачей по сбору данных с устройства.

  • Программа написана на Golang и работает на всех платформах поддерживаемых Go. На github, релизы выходят для Windows, Linux, Darwin(MacOS), FreeBSD.

  • Клиентская и серверная часть это один и тот же бинарный файл без внешних зависимостей. Запуск бинарного файла с разными конфигурационными файлами делает его или сервером или клиентом. Текущий размер бинарника ~ 50 MB.

  • Ключевым элементом вокруг которого построена вся утилита является встроенный язык запросов VQL(Velociraptor Query Language). Да-да, ещё один язык запросов, но не спешите закрывать эту статью, вероятно, вам будет достаточно функционала который уже сеть в Velociraptor и создавать что-то вручную не будет необходимости, хотя бы на первых порах.

  • При клиент-серверной архитектуре сервер посылает задания клиентам. То есть клиенты выполняют вычисления и возвращают результаты. Таким образом вычисления происходят распределенным образом.

  • Использование CPU и оперативной памяти при выполнении задач клиентом, возможно контролировать с сервера. Такой подход помогает избежать избыточной нагрузки на клиентах.

Практическое знакомство

Вам потребуется минимум усилий, чтобы повторить следующую практическую часть. Зато с её помощью вы попробуете Velociraptor на вкус ????.

Последние релизы вы можете найти на GitHub(0.6.7 на момент написания статьи). Скачайте подходящий под вашу операционную систему (в статье будет использоваться Windows). Теперь у вас есть все, чтобы запустить Velociraptor, у него есть командный(CLI) и web интерфейсы. Запустите Velociraptor в командной строке(с правами Администратора) со следующими параметрами:

.\velociraptor.exe gui --datastore temp

gui команда произведет необходимую конфигурацию программы и даст вам возможность работать без настройки клиентской и серверной частей. Такой демо режим, где и сервер и клиент это ваша рабочая станция.

--datastore temp рекомендую использовать этот параметр, предварительно создав папку temp в которой будут хранится все необходимые для работы файлы конфигурации и системные файлы.

Если все запустилось успешно, то в командной строке вы будете видеть логи в реальном времени, а по адресу https://127.0.0.1:8889/app/index.html#/ будет доступен web интерфейс.

Приветственное окно
Приветственное окно

Ранее я уже упомянул, что встроенный язык запросов VQL является ключевым элементом и он используется для описания команд, которые выполняются на клиентах. Это значит, что если вы захотите создать что-то кастомное, вам будет необходимо использовать VQL. Но к счастью, сообщество уже неплохо поработало в этом направлении и создало большую библиотеку таких инструкций/команд, называемых артефактами/Artifacts.

Перейдите в меню “View Artifacts”, в правой боковой панели вы можете видеть все артефакты, что идут вместе с исполняемым файлом. Используйте фильтр, чтобы посмотреть например те, что относятся к Windows.

Artefacts
Artefacts

Не знаю как вы, но я был впечатлен разнообразием уже созданных артефактов и возможностей при первом знакомстве.

Теперь давайте попробуем запустить один из артефактов. Я выбрал Windows.Network.Netstat для целей демонстрации. Чтобы запустить этот артефакт на конкретном клиенте, его необходимо выбрать как активный. Для этого в верхнем левом углу нажмите на иконку поиска, далее нажмите на Client ID вашего клиента.

Теперь ваш клиент является основным, с которым вы будете работать.

Перейдите в раздел Collected Artifacts, нажмите иконку + в левом верхнем углу окна.

В появившемся представлении найдите нужный вам артефакт, в моем случае это будет Windows.Network.Netstat.

Windows.Network.Netstat Artefact
Windows.Network.Netstat Artefact

Следующая вкладка Configure Parameters здесь обычно можно задать динамические параметры артефакта, но в моем случае таких параметров нет.

Далее в Specify Resources вы можете произвести тонкую настройку ресурсов, которые будет потреблять ваш артефакт. Эти параметры действительно помогают минимизировать загрузку клиентов и не допускать воздействия на какие-либо рабочие процессы.

Specify Resources Tab
Specify Resources Tab

В моем случае параметров по умолчанию достаточно, нажимаю Launch.

Несколько секунд ожидания и информация собрана. В нижней части окна во вкладке Results представлена информация по всем сетевым соединениям на моём клиенте. Предлагаю вам самостоятельно просмотреть и запустить еще несколько интересных для вас артефактов. Здесь вы можете посмотреть какие артефакты встроены в исполняемый файл по умолчанию.

Offline коллектор

Следующий интересный пример, который я бы хотел осветить в этой статье, это создание offline коллектора. Исполняемый файл Velociraptor'а может быть сконфигурирован таким образом, что при его запуске он выполнит сбор и отправку нужной информации после чего завершит работу. Когда это может понадобиться? Часто в работе бывают случаи когда существуют подозрения на компрометацию лэптопа, доступ к которому ограничен или отсутствует вовсе. В таких случаях хорошо бы иметь файл, который легко запустить пользователю и который соберет всю необходимую информацию.

Такой файл достаточно просто создать в Velociraptor. Перейдите в Server Artefacts и левом верхнем меню нажмите на иконку самолетика.

В качестве артефакта для коллектора предлагаю рассмотреть Windows.KapeFiles.Targets. Если вы не знакомы с KapeFiles, то подробнее можете ознакомится в репозитории проекта. А в двух словах, KapeFiles это структурированная информация о месторасположении многих файлах в системе Windows, которые могут быть полезны при проведении расследования. Изначально KapeFiles созданы для использования в программе Kape, но как видите их можно трансформировать и для других утилит.

После выбора артефакта, перейдем к параметрам. В этот раз количество параметров, которые можно указать огромно. Вы можете изучить их подробнее, но в целях демонстрации я укажу один - сбор Windows Event логов

Следующая вкладка Configure Collection настраивает необходимые действия по завершению работы артефакта. Тут и шифрование и отправка файлов на сетевые хранилища и простое создание zip архива.

Вкладка Specify Resources как и в прошлый раз поможет вам избежать чрезмерного потребления ресурсов на клиентской машине, если это необходимо.

Нажимаем Launch и через несколько секунд создание Offline коллектора будет завершено. Исполняемый файл вы сможете найти в нижней части окна во вкладке Uploaded Files. Теперь все, что вам остается это скачать файл и передать его пользователю для запуска на лэптопе. Важно отметить, что запуск Offline коллектора лучше производить с правами администратора, в противном случае доступ не ко всем файлам системы будет возможен.

Вместо заключения

Добавлю ещё несколько фактов, которые, вероятно, смогут ответить на некоторые появившиеся вопросы.

Velociraptor распространяется под лицензией AGPLv3 и в соответствии с духом FOSS. Другими словами с программой можно делать все, кроме её продажи. Думаю, это вам неинтересно ????.

Не так давно компания Rapid7 взяла этот проект под свое крыло. Эта новость хорошая, потому что проект остается открытым и с AGPLv3 лицензией, а Rapid7 выделяет бюджет на поддержание разработки и построение сообщества, попутно рекламируя себя.  

Задать вопрос и получить техническую поддержку можно на Discord сервере. Этот канал более чем живой. Mike Cohen - автор и вдохновитель проекта, отвечает на вопросы очень быстро, зачастую в течении нескольких минут.  

Я планирую сделать серию статей, подобных этой, с примерами использования Velociraptor. Надеюсь после прочтения вы найдете эту утилиту полезной и возможно она займет место среди других инструментов в вашем SOC.

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


  1. concorde
    00.00.0000 00:00

    Мое почтение за статью, очень редкий инструмент в СНГ, но очень многогранный.
    Не хватает раскрытия функционала notebooks, ну и юзкейсов =)


    1. vitaliy0x1 Автор
      00.00.0000 00:00

      Спасибо! Планирую еще несколько статей по теме.


      1. msuhanov
        00.00.0000 00:00

        Обязательно еще про баг напишите, который "портил" данные в создаваемой копии. Velociraptor используют многие, баг был довольно легко воспроизводимый, но, видимо, его списывали на "это же работающая система, данные могут меняться".