Если такие понятия как 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 в командной строке(с правами Администратора) со следующими параметрами: 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 коллектора. Исполняемый файл 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.