
Фреймворк реагирования на инциденты и форензики

Пользовательское приложение для асинхронного представления криминалистических данных на базе Elasticsearch.
Это приложение предназначено для загрузки файла "коллекций" Mandiant Redline и предоставления гибкости в поиске/накоплении и тегировании.
Приложение родилось из-за невозможности контролировать несколько расследований (или сотен конечных точек) в едином окне.
Для загрузки аудитов Redline мы создали nightHawkResponse — полноценное приложение на GOpher, созданное для работы с этим фреймворком. Исходный код приложения доступен в этом репозитории, скомпилированный бинарник уже запущен внутри ISO и готов к загрузке с первого запуска.
В настоящее время мы разрабатываем новую крупную версию и планируем выпустить её к марту 2020 года. Новая версия нацелена на выполнение следующих задач.
Мы поняли, что для эффективной работы всего репозитория, управления сущностями и поддержания всего в актуальном состоянии было слишком много движущихся частей. Мы также считаем, что основные данные, хранящиеся в Elastic, должны более эффективно использоваться Kibana, поэтому мы решили воплотить это в реальность, разработав плагин, который делает это вместе с удивительным рабочим процессом Kibana.
Установка
Документация по API будет позже в Wiki
01/09/2016: Версия 1.0.3
Возможности:
Видеодемонстрация: Платформа nightHawk Response
Чтобы упростить использование nightHawk, мы создали ISO со всем предварительно настроенным. То есть вы получаете следующее:
/opt/nighthawk/etc/nightHawk.json. Запуск системы:
Перед созданием виртуальной машины с предоставленным ISO учтите следующее:
Ожидается: Настройка службы Elastic в виде двух узлов с 1/4 выделенной системной памяти на узел. Это означает, что если вы дадите 2 ГБ ОЗУ, каждый узел ES получит 512 МБ, а в системе останется 1 ГБ для работы.
Если вы хотите настроить иначе, зайдите по SSH и настройте как вам удобно.
Минимум 20 ГБ. Файл аудита может быть большим, поэтому рекомендуется выделить много места для обработки большого количества коллекций.
Ожидается: Настройка хранилища на основе пользователя для крупномасштабных инсталляций. Если вы хотите создать дополнительные разделы, вы можете сделать это самостоятельно, внеся изменения в конфигурацию для указания хранилища данных ES на новый раздел.
Установка:
Скачать ISO: nightHawk v1.0.3
Настройте оборудование, смонтируйте ISO в виртуальную машину, запустите скрипт установки.
После завершения в вашем браузере (Chrome/FireFox) перейдите по адресу https://192.168.42.173.
Войдите в систему с 'nighthawk/nighthawk' - нажмите "goto site", чтобы войти в приложение.
Если вам нужен доступ к Kibana, перейдите по адресу https://192.168.42.173:8443.
Если вам нужно подключиться по SSH, данные для входа: admin/nightHawk.
Если вы хотите изменить IP-адрес (отражается во всём приложении): /opt/nighthawk/bin/nighthawkctl set-ip <новый_ip_адрес>
Скрипт сбора аудитов Redline можно найти в корне этого репозитория. Используйте его при использовании автономного сборщика Redline, так как он вернёт документы, необходимые для правильного заполнения nightHawk.
Загрузка:
ВАЖНО:
Создание zip-файла аудита для загрузки (Автономный сборщик Redline):
шаг_1: Перейдите в Sessions\AnalysisSessionX\Audits<ComputerName>, где X — номер анализа, обычно 1.
шаг_2: Создайте zip-архив папки, содержащей файлы аудита, например 20160708085733
шаг_3: Загрузите 20160708085733.zip
ВАЖНО: Используйте существующий аудит HX (Сборщик HX): Аудиты FireEye HX имеют расширение .mans. Аудит от HX отличается от сборщика Redline, потому что возвращаемый файл .mans на самом деле является zip-архивом. Это означает, что его можно загрузить напрямую, в отличие от аудита Redline, для которого нужно следовать инструкциям выше.
Перейдите к иконке "Upload" на панели навигации, выберите один или несколько zip-файлов аудита, укажите имя случая (иначе система предложит своё) и отправьте. Если вы использовали наш скрипт аудита Redline для создания коллекции, следуйте инструкциям "Redline Collector" чуть выше.
После обработки конечная точка появится в узле дерева "Current Investigations". Под конечной точкой будут представлены все доступные типы аудита для этой конечной точки. Функция загрузки этого веб-приложения запускает подпроцессы pOpen, которые вызывают приложение GO для разбора аудита Redline и отправки данных в Elasticsearch. Есть два варианта загрузки: последовательный и параллельный.
Обратите внимание: Параллельная загрузка ограничена 5 одновременно и может быть ресурсоёмкой; если у вас недостаточно мощная машина, ограничьте использование этой функции 2-3.
Тегирование:
Вы можете кликнуть на любую строку в любой таблице (в представлении ответа), чтобы отметить эти данные. После тегирования вы можете просмотреть комментарии в представлении комментариев.
Elasticsearch:
Существуют пользовательские маппинги (предоставлены в корне git) и рекомендательные комментарии по следующему:
Документы индексируются через приложение GO как связь "родитель/ребёнок". Это было выбрано, потому что позволяет получить относительно логичный путь для просмотра документов, т.е. родитель — это имя конечной точки, а дети — типы аудита. Выполнение агрегаций в документах со связью "родитель/ребёнок" в масштабе также кажется разумным. Фреймворк накопления (stacking) основан на построении массива родителей для получения всех агрегаций дочерних документов для определённых типов аудита.
Настройки Elasticsearch требуют настройки и правильного распознавания дизайна. Шардирование важно понимать из-за того, как мы связываем документы "родитель/ребёнок". Ребёнок ВСЕГДА направляется к родителю, он не может существовать сам по себе. Это означает, что необходимо учитывать, сколько шардов находится в индексе. Насколько мы понимаем, может быть разумно выбрать конфигурацию, включающую много узлов с одиночными шардами. Для повышения производительности такой конфигурации мы работаем над поиском с маршрутизацией по шардам.
В настоящее время мы работаем над проектированием наилучшей возможной конфигурации для быстрого поиска.
Это приложение предназначено для огромного масштабирования. С самого начала проектирования мы могли запускать его плавно на виртуальной машине Ubuntu с одним процессором и 2 ГБ ОЗУ с 3 узлами ES (Macbook Pro) и примерно 4 миллионами+ документов (или 50 конечных точек). Если переходить в производство с конфигурацией 64/128 ГБ ОЗУ и SAS-хранилищем, вы сможете обеспечить молниеносное время ответа при извлечении документов, одновременно работая с приложением через многих аналитиков.
Рекомендации:
Смешанная обработка DataTables:
Существует несколько типов аудита, которые слишком велики, чтобы возвращать все документы в таблицу. Например, история URL и реестр могут вернуть 15k документов в DOM, что создаст нагрузку на браузер клиента. Для борьбы с этим мы используем обработку на стороне сервера для постраничного вывода результатов определённых типов аудита. Это означает, что вы также можете искать по документам в типе аудита, используя Elasticsearch на бэкенде.
Тегирование:
В настоящее время мы можем помечать документы и просматривать эти комментарии. Мы можем обновлять или изменять их. Аналитик может предоставить контекст, такой как дата/имя аналитика/комментарий к документу.
Зависимости (все предустановлены):
elasticsearch-dsl.py
django 1.8
python requests
В планах:
Обработка дескрипторов (в процессе).
Ползунки выбора времени для генераторов на основе времени (в процессе).
Контекстное меню для текущих/предыдущих расследований.
Контекст тегирования. Система тегирования будет интегрирована в цикл websocket для живых комментариев в панелях аналитиков (в процессе).
Контекст приложения.
Возможность перемещать конечные точки между контекстами.
Возможный редизайн дерева узлов, чтобы оно было основано на дате расследования.
Выборочное накопление, в настоящее время включён селектор корневого узла.
Поиск с маршрутизацией по шардам.
Шаблон скрипта аудита Redline.
Более широкая интеграция с AngularJS (в процессе).
Адаптивный дизайн. (в процессе).
Страница административного управления для настройки основных параметров (в процессе).
Авторы и примечания:
Мы всегда ищем единомышленников, которые хотят внести вклад в этот проект; мы ни в коем случае не гуру веб-дизайна. Если вы считаете, что мы можем сделать что-то лучше, пожалуйста, сделайте pull request, и если он нам понравится, мы его примем.
Daniel Eden & Roshan Maskey
Благодарности:
Разработчики Mandiant Redline, AngularJS, Django, Angular-DataTables/DataTables, D3 (Bostock), Elasticsearch/ES-dsl.py, jsTree, qTip, GOlang, Python, Fahad Abdulaal (Логотип/Видео).
