
Gryffin — это крупномасштабная платформа для сканирования веб-безопасности.
Gryffin — это платформа для крупномасштабного сканирования веб-безопасности. Это не очередной сканер. Он был написан для решения двух конкретных проблем существующих сканеров: покрытие и масштабируемость.
Лучшее покрытие означает меньше ложных отрицательных результатов. Встроенная масштабируемость означает возможность сканирования и поддержки большой эластичной инфраструктуры приложений. Проще говоря, возможность сканировать 1000 приложений сегодня и 100 000 приложений завтра за счет простого горизонтального масштабирования.
Покрытие имеет два измерения — во время обхода и во время фаззинга. В фазе обхода покрытие подразумевает возможность найти как можно большую часть поверхности приложения. В фазе сканирования, или во время фаззинга, оно подразумевает возможность глубоко протестировать каждую часть приложения на наличие заданного набора уязвимостей.
Сегодня большое количество веб-приложений являются шаблонными, то есть один и тот же код или путь генерирует миллионы URL-адресов. Для сканера безопасности нужен только один из миллионов URL-адресов, сгенерированных одним и тем же кодом или путем. Обходчик Gryffin делает именно это.
В основе Gryffin лежит механизм дедупликации, который сравнивает новую страницу с уже просмотренными. Если HTML-структура новой страницы похожа на уже виденные, она классифицируется как дубликат и не обходится дальше.
Сегодня многие приложения являются насыщенными (rich applications). Они сильно зависят от клиентского JavaScript. Чтобы обнаружить ссылки и пути кода в таких приложениях, обходчик Gryffin использует PhantomJS для рендеринга DOM и навигации.
Поскольку Gryffin — это платформа для сканирования, а не сканер, у него нет собственных модулей фаззинга, даже для фаззинга распространенных веб-уязвимостей, таких как XSS и SQL-инъекции.
Неразумно изобретать велосипед, когда в этом нет необходимости. Gryffin в производственном масштабе в Yahoo использует открытые и пользовательские фаззеры. Некоторые из этих пользовательских фаззеров могут быть опубликованы в будущем и могут стать или не стать частью репозитория Gryffin.
В демонстрационных целях Gryffin поставляется интегрированным с sqlmap и arachni. Он не поддерживает их или какой-либо другой сканер в частности.
Философия заключается в улучшении покрытия сканирования за счет возможности фаззить только то, что нужно.
Хотя Gryffin доступен в виде отдельного пакета, он в первую очередь создан для масштабирования.
Gryffin построен на модели издатель-подписчик. Каждый компонент является либо издателем, либо подписчиком, либо и тем, и другим. Это позволяет Gryffin масштабироваться горизонтально, просто добавляя больше узлов-подписчиков или издателей.
go1.13 или новее--max-msg-size=5000000go get -u github.com/yahoo/gryffin/...
(WIP)
Код лицензирован в соответствии с BSD-подобной лицензией. См. файл LICENSE.