Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SyntheticSun — Бессерверная среда автоматизации безопасности AWS, которая собирает данные об угрозах, применяет ML-обнаружение аномалий (RCF, IP Insights) и обогащает телеметрию безопасности в Kibana для автоматического предотвращения, обнаружения и реагирования на угрозы. | Kitploit
Инструменты/GitHubGitHub/jonrau1/syntheticsun
Бессерверная безопасностьБезопасность облачных средРазведка угрозМашинное ОбучениеРеагирование на ИнцидентыОбнаружение Аномалий
GitHubjonrau1/syntheticsun

SyntheticSun

Бессерверная среда автоматизации безопасности AWS, которая собирает данные об угрозах, применяет ML-обнаружение аномалий (RCF, IP Insights) и обогащает телеметрию безопасности в Kibana для автоматического предотвращения, обнаружения и реагирования на угрозы.

Репозиторий
8215105 лет назадПроверено Kitploit

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

SyntheticSun

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

Ты спишь в битом стекле
С отражениями себя,
Но чувствуешь ли ты себя живым?
Да, позволь спросить тебя,
Чувствуешь ли ты себя живым?
- Norma Jean, 2016

DepShield Badge

Краткий обзор

  • Использует событийную и временную бессерверную автоматизацию (например, AWS CodeBuild, AWS Lambda) для сбора, нормализации, обогащения и корреляции телеметрии безопасности в Kibana
  • Использует аналитику угроз, данные геолокации, разведку по открытым источникам, обнаружение аномалий на основе машинного обучения (ML) и AWS API для дальнейшего обогащения телеметрии безопасности и выявления потенциальных угроз
  • Использует алгоритмы неконтролируемого машинного обучения Random Cut Forests (RCF) и IP Insights для выявления аномалий во временных рядах и парах «IP-адрес — сущность» соответственно. Предоставляются бессерверные контейнерные ресурсы для обучения и развертывания новых endpoints IP Insights по желанию.
  • Динамически обновляет наборы IP-адресов AWS WAFv2 и наборы угроз Amazon GuardDuty для усиления защиты вашей учетной записи и инфраструктуры от известных угроз

Описание

SyntheticSun построен на основе использования Malware Information Sharing Platform (MISP) и Anomali's LIMO — сообщества платформ обмена угрозами (TIP), предоставляющих различные типы индикаторов компрометации (IoC). Нормализованная и дедуплицированная аналитика угроз проверяется в почти реальном времени для быстрого выявления известных угроз в различных типах сетевого трафика. Для повышения динамизма выявления потенциальных угроз развертываются модели IP Insights, позволяющие находить аномалии (и потенциальные угрозы в них) между парами IP-адресов и сущностей (например, ID основных субъектов IAM, user-agent и т.д.). Также используются нативные детекторы RCF в Elasticsearch для обнаружения аномалий в телеметрии безопасности в почти реальном времени по мере ее поступления в Kibana. Чтобы демократизировать использование и тонкую настройку моделей ML в командах безопасности, предоставляются утилиты для обучения моделей IP Insights в качестве дополнения к основному решению.

Для оркестрации и автоматизации, а также для извлечения, преобразования и загрузки (ETL) телеметрии безопасности в Kibana используются различные бессерверные технологии AWS, такие как AWS Lambda, Amazon DynamoDB и AWS CodeBuild. Эти бессерверные технологии применяются из-за их масштабируемости, простоты использования и относительно низкой стоимости по сравнению с тяжелыми решениями MapReduce или Glue ETL. Большая часть решения развертывается через CloudFormation со вспомогательными скриптами на Python и shell, предоставленными на всех этапах, чтобы способствовать внедрению и потенциальному развертыванию в конвейерах непрерывной интеграции.

Чтобы сделать «внутренности» решения максимально легкими, основные модули Python, такие как boto3, requests, json, ipaddress, socket и re, выполняют большую часть извлечения, преобразования и загрузки (ETL) в последующие сервисы. Поскольку вся информация о геолокации предоставляется ip-api.com, она не требует учетной записи или платных тарифов и имеет отличный API, включающий информацию о регулировании в заголовках ответов. Большая часть зависимостей Elasticsearch и Kibana также предоставляется в коде (индексы, маппинги, визуализации и т.д.), чтобы избежать тяжелой ручной настройки.

Настройка

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

Перед началом: Рекомендации для производственных развертываний

SyntheticSun, как и любое найденное на GitHub, является концептуальным решением, поэтому я не стал прилагать дополнительные усилия для абсолютного укрепления безопасности в первом релизе. Если вы читаете это в момент, когда я еще не внес необходимые изменения, учтите следующее перед развертыванием решения в производственной среде (или любой среде с повышенными требованиями к безопасности). Я добавлю эти пункты в дорожную карту и обновлю по мере необходимости.

  1. Обучите собственные модели IP Insights, используя примеры из Приложения A. Использование собственных данных и постоянное переобучение модели помогут повысить точность результатов.
  2. Разверните проекты CodeBuild, сервер MISP и домен Elasticsearch Service в VPC для защиты от атак из интернета. Рассмотрите возможность использования AWS Client VPN, AWS Site-to-Site VPN, DirectConnect, Amazon Workspaces, AppStream 2.0 или (если абсолютно необходимо) обратного прокси для доступа к консоли MISP и Kibana внутри VPC.
  3. Рассмотрите использование Cognito для аутентификации в Kibana. Сделайте еще один шаг — объедините свой пул пользователей с корпоративным IdP.
  4. Рассмотрите возможность создания собственного AMI для MISP или использования Fargate для его размещения. Я также рекомендую предварительно встроить Suricata и агент Amazon CloudWatch в будущие сборки, чтобы помочь масштабировать развертывание агентов и HIDPS в вашей среде.
  5. Измените конфигурацию Suricata в соответствии с потребностями ваших команд SecOps, которые будут просматривать журналы, так как все, что делает это решение, — просто сбрасывает их. Вы также можете написать собственные правила или импортировать другие источники для усиления защиты хостов от атак.

Предварительные требования

  • Административный доступ к учетной записи AWS (если вы используете это в развертывании с несколькими учетными записями, вы должны находиться в учетной записи, где находятся ваши Master или Delegated Admin Master)
  • Application Load Balancer (ALB) с хотя бы одним целевым экземпляром и включенными журналами доступа
  • Ведение журнала CloudTrail, включенное в вашей учетной записи
  • Одна VPC с как минимум одной приватной подсетью (маршрут к NATGW), одной публичной подсетью (маршрут к IGW) и включенными VPC Flow Logs, а также публикацией в CloudWatch Logs

Этап 1 начинается здесь

Часто задаваемые вопросы

1. Зачем мне использовать это решение?

SyntheticSun — это простой способ начать использовать киберразведку угроз и машинное обучение для защиты периметра в облаке AWS без необходимости инвестировать в одно или несколько коммерческих средств или нанимать специалиста по данным для вашей команды безопасности (хотя в идеале вы должны сделать последнее). Это решение после начальной настройки полностью автоматизировано, что позволяет выявлять угрозы и реагировать на них на машинной скорости. Наконец, решение предоставляет базовые визуализации для вашей команды реагирования на инциденты, такие как разрешенные входящие или исходящие соединения или DNS-запросы к IP-адресам или доменам, признанным вредоносными. Основная часть решения опирается на очень легкие конвейеры автоматизации и обработки данных, которые теоретически можно повторно использовать для других целей, где требуется многоэтапная нормализация и обогащение или запланированные быстрые пакетные задания.

2. Кто должен использовать это решение?

Прежде всего, если вы используете Amazon GuardDuty и/или AWS WAF, может иметь смысл оценить это решение, но это также и требование. Очевидные персонажи, которые могут воспользоваться преимуществами, — это команды, отвечающие за безопасность всего стека и не имеющие достаточного капитала или опыта для моделирования, обучения и развертывания алгоритмов машинного обучения или значимого внедрения фидов киберразведки угроз. Эти персонажи, вероятно, являются инженерами безопасности, аналитиками SecOps/SOC или инженерами DevSecOps; однако этот список не исчерпывающий, и они не обязательно должны быть привязаны к продукту/приложению, так как центральные команды также могут это использовать. Другой вариант использования — те же персонажи (SecOps, инженеры безопасности), работающие в централизованной команде и желающие создать динамический список блокировки для брандмауэров и систем предотвращения вторжений. Проекты CodeBuild можно перенастроить для сброса CSV или плоских файлов практически в любое место (например, брандмауэры Palo Alto, фильтры URL прокси Squid и т.д.).

3. Каковы пробелы в этом решении?

SyntheticSun в настоящее время не охватывает все основные источники журналов, а именно S3 Access Logs и CloudFront Access Logs, которые неотъемлемы для способа доставки услуг многими людьми (особенно для SPA на корзинах S3). Обнаружение аномалий не распространяется дальше WAF, API Gateway Access Logs или CloudTrail из-за моей одержимости IP Insights и полного отсутствия какого-либо образования в области науки о данных (серьезно, я даже не умею пользоваться pandas или numpy). Нет глубокого анализа сырых IoC киберразведки, кроме попытки сопоставить их в журналах.

4. Какие соображения для развертывания в организации, помимо Master для сервисов безопасности AWS?

Самый простой способ развернуть это решение для организации — развернуть его в централизованной учетной записи сервисов безопасности. Для телеметрии нижнего уровня, такой как VPC Flow Logs и WAF Logs, следует рассмотреть возможность предоставления вспомогательных скриптов или шаблонов CloudFormation через AWS Service Catalog для упрощения включения в более низких средах. Вам нужно будет оценить потребление шардов и ротацию индексов Elasticsearch Service, а также разрешения, если у вас будут потоки доставки Kinesis Data Firehose между учетными записями, публикующиеся в централизованное место. Я создал это решение в своей личной песочнице, поэтому не встроил в решение ни одно из вышеперечисленных соображений. Я буду рад поработать над PR с учетом этого и, возможно, сделаю это сам в будущем.

По состоянию на 31 ИЮЛЯ 2020 года политики AWS Firewall Manager поддерживают агрегацию журналов WAF между несколькими учетными записями, что приближает вас на шаг к тому, чтобы сделать это гораздо менее болезненным...

5. Что такое алгоритм IP Insights? Действительно ли мое использование соответствует его предназначению?

ПРЕДУПРЕЖДЕНИЕ: Я не специалист по данным, и это будет длинный ответ. Короче: это детектор аномалий, и, думаю, да.

Поскольку я не имею никакого отношения к науке о данных или обучению, вам лучше почитать документацию. Тем не менее, вот моя любительская попытка объяснить: IP Insights — это алгоритм неконтролируемого машинного обучения, который изучает взаимосвязь между IPv4-адресом и сущностью (например, номер учетной записи, имя пользователя, user-agent). Затем IP Insights пытается определить, насколько вероятно, что сущность будет использовать этот IPv4-адрес. За кулисами IP Insights находится нейронная сеть, которая изучает латентное векторное представление этих сущностей и IPv4-адресов. Расстояние между этими векторизованными представлениями является показателем того, насколько аномально (или нет) для сущности быть связанной с (например, отправлять запрос с) IPv4-адреса.

Нейронные сети почти такие же, как они звучат; они образуют систему машинного обучения, предназначенную для поведения, аналогичного человеческому мозгу, с компьютеризированными нейронами и синапсами. В неконтролируемом машинном обучении алгоритм может выяснить, как выглядит «хорошее» (т.е. True Negative) по сравнению с «плохим» (т.е. True Positive), глядя на связь между всеми IPv4-адресами и их парными сущностями. Эта связь оценивается для идентификации векторов, которые похожи на другие, по их «расстоянию». В случае IP Insights предоставляется предварительно созданный кодировщик, который ищет IPv4-адреса, а затем хэширует все сущности в кластеры. Затем он итеративно обрабатывает их, используя векторизацию. Векторизация — это способ выполнять вычисления в виде матрицы вместо циклов (представьте цикл «For» для списка, содержащего десятки миллионов значений).

Когда вы обучаете модель IP Insights, она фактически создает себе ложные срабатывания, связывая IPv4-адреса с сущностями, имеющими большое расстояние (т.е. сильно аномальные), которые вряд ли произойдут в реальности; теперь модель может различать True Positives, False Positives и True Negatives. Это делается для предотвращения другого сумасшедшего термина, называемого «перекрестная энтропия» (также известная как «логарифмические потери», как будто это проще), и вводит еще один термин — бинарную классификацию. IP Insights по сути спрашивает: «Какова вероятность того, что этот IP-адрес, связанный с этой сущностью, является аномальным?» Это делает его бинарным, я думаю, так что «да, это плохо» или «нет, это не так». Вероятность представляется в виде значения от 0 до 1, цель всех моделей машинного обучения — сделать его как можно ближе к 0, поэтому предсказание значения 0,01 для того, что на самом деле равно 1 (известный True Positive), приведет к очень высоким логарифмическим потерям. Итак, с учетом всего вышесказанного, создавая намеренно мусорные данные, IP Insights помогает уменьшить эти логарифмические потери (т.е. плохие предсказания) во время обучения.

Это подводит нас к выводу из endpoint. Когда вы запрашиваете его (либо пакетами, либо в почти реальном времени с помощью API InvokeEndpoint), ответ представляет собой неограниченное число с плавающей запятой, которое может быть отрицательным или положительным. Чем выше оно над 0, тем более вероятно, что это аномалия, и здесь начинается ваша работа. В этом решении я выбрал все, что выше 0,03, что в значительной степени условно; чтобы приблизиться к истине, вы должны предоставить True Positives эндпоинту и посмотреть, каков будет ответ. Основываясь на этих результатах, вы можете настроить многоуровневый подход, когда ваше приложение может выдать второй фактор аутентификации, поднять тревогу или заблокировать его напрямую в зависимости от оценки. Ответ на вторую часть вопроса: «Да, я так думаю». Обучение модели с user-agent в паре с IP-адресом на самом деле довольно сомнительно. Для других менее волатильных сущностей (номер учетной записи, имя пользователя, пользователь IAM) это кажется предполагаемым использованием.

6. Какие фиды киберразведки угроз мне следует использовать? Что произойдет, если будут дубликаты?

В решении я предоставляю несколько примеров фидов, которые вам следует использовать; некоторые из них довольно очевидны, например фид доменов киберпреступности, Emerging Threats и CI-badguys. На своей реальной работе я работаю с одним из самых талантливых специалистов по киберразведке угроз в мире (без шуток, она потрясающая!), который также повлиял на выбор. Как и в моделях машинного обучения и всем остальном, что вы будете строить, вы должны адаптировать свои фиды угроз и их агрегацию к вашей текущей среде угроз. Дубликаты идентифицируются в MISP, и в таблицах DynamoDB указан только хэш-ключ для обеспечения уникальности, поэтому даже если 5 фидов сообщают об одном и том же IPv4-адресе, в таблицу попадет только один.

Вы также можете добавить собственные коммерческие платформы и фиды киберразведки угроз, такие как InfoBlox или Recorded Future, направив их на таблицы DynamoDB с аналогичным синтаксисом.

7. Я выполнил поиск по исходным источникам журналов в S3, но не вижу записей в Elasticsearch; почему?

Большинство доставок журналов от AWS осуществляются по принципу «best effort», поэтому нет официального SLA; однако я бы предположил, что это около 99,5–99,9%, где последние 0,5–0,1% не будут доставлены. «Производственный» трафик также является приоритетным в AWS; если есть ограничения пропускной способности сети, он по умолчанию будет отдавать приоритет восстановлению связи с клиентами, а не отправке журналов. Более вероятное событие — что необработанный файл журнала был слишком велик для Lambda, чтобы обработать его полностью за отведенное время; вы часто видите это, когда вас засыпают DOS или краулером с одного и того же IP-адреса клиента. WAF и ALB группируют файлы журналов по вызывающему (насколько я могу судить), поэтому, если вы поглощаете сотни запросов, файл журнала может быть очень большим.

8. У меня есть существующий домен Elasticsearch Service в VPC; будет ли это решение работать?

Да, однако вам потребуется выполнить одно из следующих действий:

  • Поместить функции Lambda в VPC и присоединить VPC Endpoints для S3, DynamoDB и CloudWatch Logs.
  • Либо изменить решение для публикации окончательно отформатированных журналов в Kinesis Data Firehose и направить их в ваш домен ES в VPC.

Это повлечет дополнительные расходы. Lambda в VPC, особенно при десятках параллельных вызовов, скорее всего, приведет к дополнительным проблемам из-за того, что ENI остаются и занимают ваше RFC1918 пространство. Если у вас нет абсолютной необходимости изолировать весь трафик внутри VPC для соответствия требованиям, я бы не стал идти по этому пути.

9. Могу ли я публиковать эти источники журналов в Splunk вместо этого?

Да, это достижимо путем изменения решения для публикации окончательно отформатированных журналов в Kinesis Data Firehose и направления их в Splunk.

10. Будете ли вы поддерживать другие источники журналов?

Я надеюсь получить поддержку для журналов DNS Route 53, S3 Access Logs, CloudFront Access Logs и API Gateway Access Logs, а также, возможно, некоторых других журналов на основе хостов в будущем.

11. Почему вы использовали агент CloudWatch вместо агента Kinesis Data?

Честно говоря, я бы предпочел использовать агент Kinesis Data, но столкнулся с множеством проблем: он не включен по умолчанию в Amazon Linux 2, и теперь, когда AMI Ubuntu 18.04 LTS поставляются с предустановленной Java 11, я столкнулся с проблемами обратной совместимости с агентом, так как сборка завершается ошибкой, если у вас нет OpenJDK 8 или 9. Было гораздо проще установить агент CloudWatch, так как он часто обновляется новыми функциями, и существует поддержка документа Systems Manager для конфигурации; у него даже есть мастер установки. Если AWS когда-нибудь будет относиться к поддержке агента Kinesis Data так же серьезно, как к агенту CloudWatch, я, возможно, переключусь на него, так как я бы предпочел публиковать напрямую в Kinesis Data Firehose для определенных журналов на основе хостов (Suricata, Squid, Nginx, Apache) вместо использования CloudWatch Logs в качестве посредника.

Вклад

Я с радостью принимаю PR для пунктов, отмеченных как «Help Wanted» в Issues или Project Board. Я также рассмотрю любые другие предложенные PR, если они соответствуют духу проекта.

Первые участники

Особая благодарность David Dorsey и Ryan Nolette, которые предоставили ценные отзывы, тестирование и вклад в тонкую настройку SyntheticSun.

Лицензия

Эта библиотека лицензирована в соответствии с GNU General Public License v3.0 (GPL-3.0). См. файл LICENSE.

Скачать инструмент