
Gryffin is a large scale web security scanning platform.
Gryffin ist eine groß angelegte Plattform für Web-Sicherheitsscans. Es ist nicht nur ein weiterer Scanner. Es wurde geschrieben, um zwei spezifische Probleme bestehender Scanner zu lösen: Abdeckung und Skalierbarkeit.
Bessere Abdeckung bedeutet weniger falsch-negative Ergebnisse. Die inhärente Skalierbarkeit ermöglicht die Fähigkeit zu scannen und eine große elastische Anwendungsinfrastruktur zu unterstützen. Einfach ausgedrückt: die Fähigkeit, heute 1000 Anwendungen und morgen 100.000 Anwendungen durch einfache horizontale Skalierung zu scannen.
Abdeckung hat zwei Dimensionen – eine während des Crawls und die andere während des Fuzzings. In der Crawl-Phase bedeutet Abdeckung, so viel wie möglich von der Anwendungsfläche zu finden. In der Scan-Phase oder beim Fuzzing bedeutet es, jeden Teil der Anwendung auf eine angewandte Reihe von Schwachstellen tiefgreifend testen zu können.
Heutzutage sind viele Webanwendungen vorlagenbasiert, das bedeutet, derselbe Code oder Pfad generiert Millionen von URLs. Für einen Sicherheitsscanner reicht eine der Millionen von URLs, die vom selben Code oder Pfad generiert werden. Gryffins Crawler macht genau das.
Im Herzen von Gryffin befindet sich eine Deduplizierungs-Engine, die eine neue Seite mit bereits gesehenen Seiten vergleicht. Wenn die HTML-Struktur der neuen Seite ähnlich zu den bereits gesehenen ist, wird sie als Duplikat eingestuft und nicht weiter gecrawlt.
Viele Anwendungen sind heutzutage Rich-Anwendungen. Sie werden stark von clientseitigem JavaScript angetrieben. Um Links und Codepfade in solchen Anwendungen zu entdecken, verwendet Gryffins Crawler PhantomJS für DOM-Rendering und Navigation.
Da Gryffin eine Scan-Plattform und kein Scanner ist, hat es keine eigenen Fuzzer-Module, selbst nicht zum Fuzzing gängiger Web-Schwachstellen wie XSS und SQL Injection.
Es ist nicht klug, das Rad neu zu erfinden, wo es nicht nötig ist. Gryffin verwendet in Produktionsgröße bei Yahoo Open-Source- und benutzerdefinierte Fuzzer. Einige dieser benutzerdefinierten Fuzzer könnten in Zukunft Open Source werden und möglicherweise Teil des Gryffin-Repositoriums sein oder auch nicht.
Zu Demonstrationszwecken ist Gryffin mit sqlmap und arachni integriert. Es befürwortet weder diese noch einen anderen Scanner im Besonderen.
Die Philosophie ist, die Scan-Abdeckung zu verbessern, indem man nur das fuzzen kann, was man braucht.
Obwohl Gryffin als eigenständiges Paket erhältlich ist, ist es in erster Linie für Skalierung gebaut.
Gryffin basiert auf dem Publisher-Subscriber-Modell. Jede Komponente ist entweder ein Publisher oder ein Subscriber oder beides. Dies ermöglicht es Gryffin, horizontal zu skalieren, indem einfach weitere Subscriber- oder Publisher-Knoten hinzugefügt werden.
go1.13 oder höher--max-msg-size=5000000go get -u github.com/yahoo/gryffin/...
(WIP)
Code unter der BSD-Lizenz lizenziert. Siehe LICENSE-Datei für die Bedingungen.