Введение — Поиск гарантий безопасности и 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 и загружает целевой URLsleep (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 может пересекаться с соответствием требованиям, обеспечением гарантий и обнаружением угроз.
Используя общедоступные порталы доверия, исследователи могут:
- Анализировать структуры средств защиты
- Проверять заявления о безопасности
- Автоматически обнаруживать изменения
…всё это без аутентификации или прямого доступа к системам.