Назад к публикациям
Архив исследований

Обнаружение внутренней безопасности через центры доверия SafeBase

Использование открытых порталов доверия SafeBase и безголового сканирования Nuclei для извлечения общедоступных средств контроля безопасности, проверки заявлений об обеспечении и автоматизации обнаружения изменений в масштабе.

osintnucleidetectionsafebasecompliance

Введение — Поиск гарантий безопасности и OSINT

Открытые порталы SafeBase одновременно служат двум аудиториям:

  • Потенциальным клиентам, которым нужно подтверждение вашего уровня безопасности
  • Исследователям безопасности (специалистам по Blue и Red Team)

Каждая зелёная галочка свидетельствует о средстве защиты, которое (предположительно) действует сегодня; каждая отсутствующая галочка является не менее красноречивым намёком на то, чего не существует.


Что делает этот метод обнаружения

Подход, описанный в этой статье:

  • Собирает заголовки каждого средства защиты непосредственно из HTML-тела с помощью Nuclei в безголовом режиме
  • Нормализует эти заголовки в машиночитаемые результаты с помощью единственного шаблона на основе регулярных выражений
  • Выводит JSON/CLI-совпадения внутренних средств защиты

Зачем собирать эти данные?

Стандарты соответствия, такие как:

  • ISO 27001
  • SOC 2
  • PCI-DSS
  • Региональные нормы конфиденциальности

…требуют доказательств того, что средства защиты внедрены и функционируют.

SafeBase упрощает этот процесс, устраняя необходимость в бесконечной переписке по электронной почте и запросах документов.

Зачем делать скрапинг собственного Trust Centre?

Даже если вы его создали, для этого есть весомые причины:

  • Непрерывное подтверждение
    Аудиторы всё чаще ожидают постоянных доказательств в режиме реального времени

  • Обнаружение изменений
    Названия средств защиты, их группировка или политики могут меняться после обновлений или поглощений

  • Сопоставление со стандартами третьих сторон
    Вывод в формате JSON позволяет сопоставлять данные с такими стандартами, как NIST 800-53


Ценность для Blue Team и Red Team

Команда Преимущество
Blue Team Гарантирует точность публичных заявлений
Red Team Выявляет пробелы путём сравнения с внутренними библиотеками средств защиты

Обнаружение

Ручная проверка работает, но не масштабируется.

Вместо этого данный подход использует ProjectDiscovery / Nuclei — быстрый инструмент сканирования на основе YAML-шаблонов.

Почему Nuclei?

  • Обнаружение на основе шаблонов
  • Высокоскоростное сканирование
  • Легко настраивается
  • Идеально подходит для крупномасштабной автоматизации

Matchers

Шаблон включает 70 matchers.

Примеры матчеров на основе регулярных выражений

- type: regex
  name: firewall
  regex: ['(?i)Firewall(?:[\s\S]{0,600}?data-testid="enabled")?']

- type: regex
  name: incident-response-policy
  regex: ['(?i)Incident\s+Response\s+Policy(?:[\s\S]{0,600}?data-testid="enabled")?']

Использованные техники регулярных выражений

Проблема Решение
Разный регистр символов Флаг (?i)
Смешанные пробелы/переносы строк \s+
Неизвестный промежуток между заголовком и значком [\s\S]{0,600}?

Устранение ложных срабатываний

DSL-матчер обеспечивает более высокую точность:

- type: dsl
  name: names
  dsl:
    - 'status_code == 200'
    - 'contains_any(body, "Powered by SafeBase")'
  condition: and

Что проверяется

Оба условия должны выполняться:

  • Код статуса ответа равен 200
  • HTML содержит "Powered by SafeBase"

Обход WAF Cloudflare

Большинство порталов SafeBase находятся за WAF Cloudflare, который блокирует попытки скрапинга.

Решение: Безголовый режим

При использовании безголового Chromium в Nuclei:

  • Выполняются JavaScript-испытания
  • Обходится Cloudflare Managed Challenge
  • Отображается динамический контент

Конфигурация безголового режима

headless:
  - steps:
      - action: navigate
        args:
          url: "{{BaseURL}}"
      - action: sleep
        args:
          duration: 1s

Пояснение

  • navigate
    Запускает Chromium и загружает целевой URL

  • sleep (1s)
    Позволяет:

    • Выполнение JavaScript
    • Установку cookies
    • Полный рендеринг страницы

Увеличьте задержку, если HTML отображается не полностью.


Устранение неполадок

Если результаты отсутствуют:

  • Ваш IP-адрес может быть заблокирован
  • При необходимости используйте прокси

Сканирование в масштабе

1. Формирование списка целей

# domains.txt
https://trust.gitlab.com
https://security.projectdiscovery.io
https://trust.your-vendor-here.com

Вы также можете включить:

  • Поддомены
  • Просканированные эндпоинты

2. Запуск Nuclei с параллелизмом

nuclei \
  -t safebase-checks-enabled.yaml \
  -headless \
  -l matches.txt \
  -c 50 \
  -o safebase-scan.json

Ключевые флаги

Флаг Назначение
-l Входной файл
-c 50 Параллельные браузеры (ресурсоёмко)
-o Выходной файл

Параметры вывода

  • JSON
  • CSV
  • Stdout

Вы можете перенаправить результаты в:

  • S3
  • Slack
  • SIEM

Репозиторий шаблонов

https://github.com/rxerium/internal-security-detect


3. Автоматизация через CI/CD

Пример GitHub Actions

jobs:
  safebase-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: |
          nuclei -t safebase-checks-enabled.yaml -headless -l domains.txt -c 50 -o results.json
      - name: Upload artefact
        uses: actions/upload-artifact@v4
        with:
          name: safebase-results
          path: results.json

Заключительные мысли

Эта техника ограничена организациями, использующими SafeBase, однако она демонстрирует мощную концепцию:

Пассивный OSINT может пересекаться с соответствием требованиям, обеспечением гарантий и обнаружением угроз.

Используя общедоступные порталы доверия, исследователи могут:

  • Анализировать структуры средств защиты
  • Проверять заявления о безопасности
  • Автоматически обнаруживать изменения

…всё это без аутентификации или прямого доступа к системам.