Vespasian – открытый инструмент для поиска конечных точек API и автоматической сборки спецификаций по реальному HTTP-трафику. Проект поддерживает три типа интерфейсов: REST, GraphQL и SOAP. На выходе Vespasian формирует OpenAPI 3.0, GraphQL SDL или WSDL, в зависимости от того, какой тип интерфейса он обнаружил в захваченном трафике.
Инструмент развивает компания Praetorian. Vespasian входит в набор открытых наступательных инструментов компании и рассчитан на задачи, которые возникают в пентесте и анализе поверхности атаки приложений. При этом сам проект опубликован отдельно в открытом репозитории и распространяется по лицензии Apache 2.0.
Кратко о проекте
| Параметр | Что делает Vespasian |
|---|---|
| Назначение | Находит конечные точки API по реальному трафику и собирает спецификации |
| Источники данных | Безголовый браузер, экспорт Burp Suite, HAR, mitmproxy |
| Поддерживаемые типы | REST, GraphQL, SOAP/WSDL |
| Выходные форматы | OpenAPI 3.0, GraphQL SDL, WSDL XML |
| Модель работы | Два этапа: захват трафика и генерация спецификации |
| Лицензия | Apache License 2.0 |
Vespasian решает прикладную проблему, знакомую почти каждому специалисту по безопасности API. Во время пентеста документация на API часто отсутствует, устаревает или покрывает только часть конечных точек. Статический разбор кода тоже помогает не всегда, потому что современные веб-приложения и мобильные клиенты собирают запросы во время работы, а не хранят их в виде простого списка путей.
Vespasian предлагает другой подход. Вместо попытки угадать структуру API по исходному коду инструмент наблюдает за тем, что приложение реально отправляет по сети. Затем Vespasian отделяет полезные запросы от фонового шума, определяет тип интерфейса и строит машиночитаемую спецификацию. Такой подход особенно полезен там, где обычный обход страниц или поиск /swagger.json ничего не даёт.
Как Vespasian работает
В основе Vespasian лежит двухэтапная схема.
- На первом этапе инструмент захватывает трафик. Для этого он либо запускает обход приложения через безголовый браузер с исполнением JavaScript, либо импортирует уже собранный трафик из Burp Suite, HAR или mitmproxy.
- На втором этапе Vespasian разбирает захваченные запросы, определяет тип интерфейса, убирает повторы, при необходимости делает дополнительные запросы и затем строит итоговую спецификацию.
Такое разделение даёт несколько практических преимуществ. Захват можно выполнить один раз, а генерацию повторять сколько угодно. Файл с трафиком можно разобрать отдельно, передать коллеге или использовать позже без повторного обхода цели. Документация проекта прямо подчёркивает, что такой подход упрощает отладку и даёт возможность анализировать трафик без доступа к сети.
Наиболее полезно Vespasian выглядит не в описании архитектуры, а в рабочем сценарии. Типовой порядок действий по документации выглядит так:
- Специалист указывает адрес приложения или экспортирует уже собранный трафик из прокси.
- Vespasian захватывает все HTTP-запросы, которые приложение отправляет во время работы, включая запросы, собранные JavaScript во время исполнения.
- Дальше инструмент отделяет запросы к API от изображений, таблиц стилей, сценариев, аналитических вызовов и прочего фонового трафика.
- После классификации Vespasian группирует одинаковые пути, преобразует динамические сегменты в параметры и строит описание конечных точек.
- На завершающем этапе инструмент дополняет сведения за счёт безопасных запросов чтения и формирует спецификацию, которую уже можно передать другим средствам анализа.
Для REST это означает построение OpenAPI 3.0 с путями, методами, параметрами и схемами ответов. Для GraphQL Vespasian пытается получить схему через поэтапный самоопрос сервера, а если тот отключён, извлекает структуру из уже замеченных запросов и ответов. Для SOAP-сервисов инструмент пытается получить WSDL по адресу сервиса и, если документ недоступен, восстанавливает описание по содержимому запросов и ответов.
Где инструмент полезен
- Пентест без документации API. Vespasian помогает быстро собрать карту конечных точек, параметров и форматов ответов, если документация отсутствует или устарела.
- Разбор уже собранного трафика. Инструмент умеет брать данные из Burp Suite, HAR и mitmproxy, поэтому ручная работа, сделанная раньше, не пропадает.
- Проверка мобильных приложений. Безголовый браузер не увидит вызовы мобильного клиента, но Vespasian может обработать трафик из прокси и собрать по нему спецификацию.
- Подготовка данных для следующего этапа тестирования. Документация прямо указывает на связку с Hadrian, где сгенерированную спецификацию используют для автоматизированной проверки авторизации.
- Картирование поверхности атаки веб-приложения. После исполнения JavaScript инструмент показывает не просто список URL, а структуру интерфейса, доступную для дальнейшего анализа.
Как инструмент отличает один тип API от другого
| Тип | На что смотрит Vespasian | Что получает на выходе |
|---|---|---|
| REST |
Тип содержимого JSON или XML, шаблоны путей вроде /api/ и /v1/, методы HTTP, структура ответа
|
OpenAPI 3.0 |
| GraphQL |
Путь /graphql, структура запроса в теле POST, поля data и errors в ответе
|
GraphQL SDL |
| SOAP/WSDL |
Заголовок SOAPAction, XML-конверт, параметр ?wsdl
|
WSDL XML |
Для REST Vespasian нормализует пути. Например, адреса вида /users/42 и /users/87 он сводит к шаблону /users/{id}. При этом известные буквальные пути, такие как /users/me или /users/self, сохраняются без замены. Для GraphQL инструмент использует трёхступенчатую схему самоопроса, чтобы обойти фильтры, которые блокируют стандартные запросы к схеме. Для SOAP Vespasian сначала пытается получить готовый WSDL, а при отсутствии такого документа собирает описание по замеченному обмену сообщениями.
Сравнение Vespasian и Burp Suite
| Критерий | Vespasian | Burp Suite |
|---|---|---|
| Основная задача | Поиск конечных точек API по реальному трафику и автоматическая сборка спецификаций | Ручное и автоматизированное тестирование веб-приложений через набор отдельных инструментов |
| Работа с трафиком | Захватывает трафик сам или импортирует его из внешних источников | Перехватывает, показывает и изменяет трафик через прокси |
| Что на выходе | OpenAPI 3.0, GraphQL SDL, WSDL | История запросов, результаты ручной проверки, данные для повторной отправки, перебора и сканирования |
| Работа с API без документации | Это основной сценарий | Возможна, но обычно требует ручного разбора трафика и ручного описания интерфейса |
| Роль специалиста | Инструмент автоматизирует этап реконструкции API по трафику | Специалист сам ведёт анализ через прокси, повторитель, перебор и другие модули |
| Повторное использование уже собранного трафика | Есть прямой импорт Burp Suite XML, HAR и mitmproxy | Burp сам служит одним из источников такого трафика |
| Подход к тестированию | Сначала «увидеть и описать» интерфейс | Сначала «перехватить, изменить, проверить» запросы и ответы |
| Где инструменты пересекаются | Vespasian можно использовать после ручной работы в Burp Suite, чтобы превратить историю запросов в спецификацию | Burp Suite можно использовать до Vespasian как среду перехвата и ручного анализа |
По смыслу инструменты не исключают друг друга. Документация Vespasian прямо показывает сценарий, где специалист сначала работает через Burp Suite, а потом экспортирует трафик и передаёт его Vespasian для построения спецификации. У Burp Suite другая роль: официальный набор инструментов PortSwigger делает упор на перехват трафика, ручную проверку, повторную отправку запросов и настраиваемые атаки через отдельные модули, такие как Proxy, Repeater и Intruder.
Установка и запуск
Документация проекта предлагает три варианта:
- установить из исходного кода через
go install; - скачать готовый двоичный файл со страницы выпусков;
- собрать из исходного кода через
make build.
Базовый запуск выглядит так:
vespasian scan https://app.example.com -o api.yaml
Если нужен двухэтапный режим, сначала захватывают трафик:
vespasian crawl https://app.example.com -o capture.json
или импортируют уже собранные данные:
vespasian import burp traffic.xml -o capture.json
а затем строят спецификацию:
vespasian generate rest capture.json -o api.yaml
Документация отдельно описывает полезные параметры: передачу заголовков авторизации, направление трафика через прокси, выбор области обхода, порог уверенности классификации и подробный вывод обнаруженных запросов.
Ограничения и безопасность
Главное ограничение Vespasian разработчики формулируют прямо: инструмент работает вероятностно. Он видит только те конечные точки, которые реально появились в захваченном трафике. Если приложение обращается к какому-то интерфейсу только после редкой последовательности действий, Vespasian может его не заметить. То же касается типов параметров и полноты схемы. По конечному набору наблюдений инструмент делает выводы, но не может гарантировать абсолютное покрытие.
Есть и второе ограничение. Vespasian не заменяет ручной анализ. Он хорошо собирает карту интерфейса и избавляет от рутинной реконструкции API, но не проверяет автоматически бизнес-логику, не принимает решений за специалиста и не превращает захваченный трафик в законченное заключение о безопасности.
В документации есть два важных уточнения по безопасности. Первое касается активных проверок. Во время дополнительного зондирования Vespasian по умолчанию блокирует обращения к частным и петлевым адресам. Для внутренней цели такую защиту можно отключить отдельным параметром, но по умолчанию она включена. Второе касается эксплуатации в рабочей среде. Авторы пишут, что этап обхода приложения и дополнительные запросы строятся как операции чтения. Тем не менее документация советует согласовывать тестирование с владельцем цели и по возможности использовать промежуточную среду, а не боевую систему. Burp Suite в своей документации тоже предупреждает, что функции средств тестирования безопасности могут повредить целевые системы, если работать с ними без должной осторожности.
| Плюсы | Минусы |
|---|---|
| Собирает спецификации по реальному трафику, а не по устаревшей документации | Видит только то, что попало в захват |
| Поддерживает REST, GraphQL и SOAP в одном инструменте | Полнота результата зависит от качества обхода или прокси-записи |
| Умеет работать с уже собранным трафиком из Burp Suite, HAR и mitmproxy | Не заменяет ручную проверку логики приложения |
| Подходит для мобильных приложений, где браузерный обход бесполезен | Некоторые выводы о схеме остаются вероятностными, а не точными |
| Хорошо встраивается в цепочку «обнаружить – описать – передать на проверку» | Для полной пользы нужен уже налаженный рабочий процесс с прокси, токенами и последующими средствами анализа |
Вывод
Vespasian – не сканер уязвимостей и не ещё один обходчик страниц. Это специализированный инструмент, который помогает быстро восстановить реальную структуру API по тому трафику, который приложение уже генерирует во время работы. Самый сильный сценарий применения – пентест или анализ поверхности атаки без актуальной документации, особенно когда часть трафика уже лежит в Burp Suite или mitmproxy.
Главная сильная сторона Vespasian связана с практической экономией времени на этапе картирования интерфейса. Главное ограничение тоже очевидно: инструмент не знает больше, чем увидел в захвате. Поэтому Vespasian полезнее воспринимать как средство реконструкции API и подготовки данных для дальнейшей проверки, а не как самостоятельное средство полного анализа безопасности.