
Gryffin은 대규모 웹 보안 스캐닝 플랫폼입니다.
Gryffin은 대규모 웹 보안 스캐닝 플랫폼입니다. 이는 또 다른 스캐너가 아닙니다. 기존 스캐너의 두 가지 특정 문제인 커버리지와 확장성을 해결하기 위해 작성되었습니다.
더 나은 커버리지는 더 적은 거짓 음성을 의미합니다. 내재된 확장성은 스캔 능력과 대규모 탄력적 애플리케이션 인프라를 지원하는 능력을 의미합니다. 간단히 말해, 오늘 1000개의 애플리케이션을 스캔하는 능력이 내일은 단순한 수평 확장을 통해 100,000개의 애플리케이션을 스캔할 수 있음을 의미합니다.
커버리지는 두 가지 차원이 있습니다. 하나는 크롤링 중이고 다른 하나는 퍼징 중입니다. 크롤링 단계에서 커버리지는 애플리케이션의 발자국을 최대한 많이 찾을 수 있음을 의미합니다. 스캔 단계 또는 퍼징 중에는 애플리케이션의 각 부분을 깊이 있게 적용된 취약점 세트에 대해 테스트할 수 있음을 의미합니다.
오늘날 많은 웹 애플리케이션은 템플릿 기반입니다. 즉, 동일한 코드나 경로가 수백만 개의 URL을 생성합니다. 보안 스캐너의 경우 동일한 코드나 경로로 생성된 수백만 개의 URL 중 하나만 있으면 됩니다. Gryffin의 크롤러는 바로 그 작업을 수행합니다.
Gryffin의 핵심에는 새 페이지를 이미 본 페이지와 비교하는 중복 제거 엔진이 있습니다. 새 페이지의 HTML 구조가 이미 본 것과 유사하면 중복으로 분류되어 더 이상 크롤링되지 않습니다.
오늘날 많은 애플리케이션은 리치 애플리케이션입니다. 이들은 클라이언트 측 JavaScript에 크게 의존합니다. 이러한 애플리케이션에서 링크와 코드 경로를 발견하기 위해 Gryffin의 크롤러는 DOM 렌더링 및 탐색에 PhantomJS를 사용합니다.
Gryffin은 스캐너가 아닌 스캐닝 플랫폼이므로 XSS 및 SQL 인젝션과 같은 일반적인 웹 취약점을 퍼징하는 경우에도 자체 퍼저 모듈이 없습니다.
필요하지 않은 곳에서 바퀴를 재발명하는 것은 현명하지 않습니다. Yahoo에서 프로덕션 규모로 사용되는 Gryffin은 오픈 소스 및 맞춤형 퍼저를 사용합니다. 이러한 맞춤형 퍼저 중 일부는 향후 오픈 소스화될 수 있으며 Gryffin 저장소의 일부가 될 수도 있고 아닐 수도 있습니다.
데모 목적으로 Gryffin은 sqlmap 및 arachni와 통합되어 제공됩니다. Gryffin은 이들 또는 다른 특정 스캐너를 보증하지 않습니다.
철학은 필요한 것만 퍼징하여 스캔 커버리지를 향상시키는 것입니다.
Gryffin은 독립형 패키지로 제공되지만 주로 확장성을 위해 구축되었습니다.
Gryffin은 게시자-구독자 모델을 기반으로 구축되었습니다. 각 구성 요소는 게시자, 구독자 또는 둘 다입니다. 이를 통해 Gryffin은 구독자 또는 게시자 노드를 추가하기만 하면 수평 확장이 가능합니다.
go1.13 or later--max-msg-size=5000000go get -u github.com/yahoo/gryffin/...
(WIP)
Code licensed under the BSD-style license. See LICENSE file for terms.