Если такие понятия как 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.
Не знаю как вы, но я был впечатлен разнообразием уже созданных артефактов и возможностей при первом знакомстве.
Теперь давайте попробуем запустить один из артефактов. Я выбрал Windows.Network.Netstat
для целей демонстрации. Чтобы запустить этот артефакт на конкретном клиенте, его необходимо выбрать как активный. Для этого в верхнем левом углу нажмите на иконку поиска, далее нажмите на Client ID вашего клиента.
Теперь ваш клиент является основным, с которым вы будете работать.
Перейдите в раздел Collected Artifacts, нажмите иконку + в левом верхнем углу окна.
В появившемся представлении найдите нужный вам артефакт, в моем случае это будет Windows.Network.Netstat
.
Следующая вкладка Configure Parameters
здесь обычно можно задать динамические параметры артефакта, но в моем случае таких параметров нет.
Далее в Specify Resources
вы можете произвести тонкую настройку ресурсов, которые будет потреблять ваш артефакт. Эти параметры действительно помогают минимизировать загрузку клиентов и не допускать воздействия на какие-либо рабочие процессы.
В моем случае параметров по умолчанию достаточно, нажимаю 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.