
Convolutional Neural Network zur Analyse von Pentest-Screenshots

Gib deinen Screenshots einen schnellen Blick.
Eyeballer ist für umfangreiche Netzwerk-Penetrationstests gedacht, bei denen Sie „interessante“ Ziele aus einer riesigen Menge webbasierter Hosts finden müssen. Verwenden Sie wie gewohnt Ihr bevorzugtes Screenshot-Tool (EyeWitness oder GoWitness) und lassen Sie die Screenshots dann durch Eyeballer laufen, um zu erfahren, welche wahrscheinlich Schwachstellen enthalten und welche nicht.
Testen Sie es live unter: https://eyeballer.bishopfox.com
| Alt aussehende Seiten | Anmeldeseiten |
|---|---|
![]() | ![]() |
| Webapp | Eigene 404-Seiten |
|---|---|
![]() | ![]() |
| Geparkte Domains |
|---|
![]() |
Alt aussehende Seiten Blockartige Rahmen, kaputtes CSS, dieses gewisse „Je ne sais quoi“ einer Website, die aussieht, als wäre sie in den frühen 2000ern entworfen worden. Sie erkennen es, wenn Sie es sehen. Alte Websites sind nicht nur hässlich, sie sind in der Regel auch extrem anfällig. Wenn Sie in etwas einbrechen wollen, sind diese Websites eine Goldgrube.
Anmeldeseiten Anmeldeseiten sind für Penetrationstests wertvoll, sie zeigen an, dass es zusätzliche Funktionen gibt, auf die Sie derzeit keinen Zugriff haben. Es bedeutet auch, dass ein einfacher Folgeprozess von Credential-Enumeration-Angriffen möglich ist. Sie denken vielleicht, dass Sie eine einfache Heuristik einrichten können, um Anmeldeseiten zu finden, aber in der Praxis ist das wirklich schwierig. Moderne Websites verwenden nicht einfach ein einfaches Eingabe-Tag, nach dem wir grep könnten.
Webapplikation Dies sagt Ihnen, dass es hier eine größere Gruppe von Seiten und Funktionen gibt, die als Angriffsfläche dienen kann. Dies steht im Gegensatz zu einer einfachen Anmeldeseite ohne weitere Funktionalität. Oder einer Standard-IIS-Startseite, die keine andere Funktionalität hat. Dieses Label sollte Ihnen anzeigen, dass es hier eine Webanwendung anzugreifen gibt.
Eigene 404-Seiten Moderne Websites lieben niedliche, eigene 404-Seiten mit Bildern von kaputten Robotern oder traurig aussehenden Hunden. Leider lieben sie es auch, HTTP‑200-Antwortcodes zurückzugeben, während sie dies tun. Noch häufiger enthält die „404“-Seite nicht einmal den Text „404“. Diese Seiten sind in der Regel uninteressant, obwohl sie optisch viel zu bieten haben, und Eyeballer kann Ihnen helfen, sie auszusortieren.
Geparkte Domains Geparkte Domains sind Websites, die echt aussehen, aber keine gültige Angriffsfläche darstellen. Es sind Platzhalterseiten, meist ohne echte Funktionalität, bestehen fast vollständig aus Werbung und werden in der Regel nicht von unserem tatsächlichen Ziel betrieben. Das ist das, was Sie bekommen, wenn die angegebene Domain falsch oder abgelaufen ist. Diese Seiten zu finden und aus dem Scope zu entfernen, ist auf Dauer wirklich wertvoll.
Laden Sie die erforderlichen Pakete mit pip herunter:
sudo pip3 install -r requirements.txt
Oder wenn Sie GPU-Unterstützung wünschen:
sudo pip3 install -r requirements-gpu.txt
HINWEIS: Die Einrichtung einer GPU für die Verwendung mit TensorFlow geht weit über den Rahmen dieser README hinaus. Es gibt Hardware-Kompatibilität zu berücksichtigen, Treiber zu installieren … Da gibt es einiges. Sie müssen diesen Teil also selbst herausfinden, wenn Sie eine GPU verwenden möchten. Aber zumindest aus Python-Paket-Sicht deckt die obige Anforderungsdatei Sie ab.
Vortrainierte Gewichte
Die aktuellen vortrainierten Gewichte finden Sie in den Releases hier auf GitHub.
Trainingsdaten Unsere Trainingsdaten finden Sie hier:
https://www.kaggle.com/altf42600/pentest-screensots
Sie benötigen zwei Dinge aus den Trainingsdaten:
images/, der alle Screenshots enthält (auf 224x224 verkleinert)labels.csv, die alle Labels enthältKopieren Sie beide in das Stammverzeichnis des Eyeballer-Codebaums.
Zusätzlich finden Sie eine vortrainierte Gewichtsdatei, die Sie ohne Training sofort verwenden können.
bishop-fox-pretrained-vN.h5Sie ist hier auf GitHub – sehen Sie im Abschnitt releases nach der aktuellen Version.
HINWEIS: Für beste Ergebnisse stellen Sie sicher, dass Sie Ihre Websites in einem nativen Seitenverhältnis von 1,6x screenshoten. Z.B. 1440x900. Eyeballer skaliert das Bild automatisch auf die richtige Größe für Sie herunter, aber wenn das Seitenverhältnis falsch ist, wird es in einer Weise gestaucht, die die Vorhersageleistung beeinträchtigt.
Um einige Screenshots zu begutachten, führen Sie einfach den „predict“-Modus aus:
eyeballer.py --weights YOUR_WEIGHTS.h5 predict YOUR_FILE.png
Oder für ein ganzes Verzeichnis von Dateien:
eyeballer.py --weights YOUR_WEIGHTS.h5 predict PATH_TO/YOUR_FILES/
Eyeballer gibt die Ergebnisse in menschenlesbarem Format (eine results.html-Datei, damit Sie sie einfach durchsuchen können) und maschinenlesbarem Format (eine results.csv-Datei) aus.
Die Leistung von Eyeballer wird anhand eines Evaluierungsdatensatzes gemessen, der 20 % der gesamten Screenshots zufällig ausgewählt enthält. Da diese Screenshots nie im Training verwendet werden, können sie eine effektive Möglichkeit sein, zu sehen, wie gut das Modell arbeitet. Hier sind die neuesten Ergebnisse:
| Gesamte binäre Genauigkeit | 93,52 % |
|---|---|
| Alles-oder-Nichts-Genauigkeit | 76,09 % |
Gesamte binäre Genauigkeit ist wahrscheinlich das, was Sie als die „Genauigkeit“ des Modells betrachten. Es ist die Wahrscheinlichkeit, dass ein beliebiges einzelnes Label korrekt ist.
Alles-oder-Nichts-Genauigkeit ist strenger. Dabei betrachten wir alle Labels eines Bildes und werten es als Fehler, wenn ein Label falsch ist. Diese Genauigkeitsbewertung ist die Wahrscheinlichkeit, dass das Modell alle Labels für ein beliebiges Bild korrekt vorhersagt.
Eine detaillierte Erklärung zu Precision vs. Recall finden Sie bei Wikipedia.
Um ein neues Modell zu trainieren, führen Sie aus:
eyeballer.py train
Sie benötigen einen Rechner mit einer guten GPU, damit dies in einer angemessenen Zeit läuft. Die Einrichtung liegt jedoch außerhalb des Rahmens dieser README.
Dies gibt eine neue Modelldatei (standardmäßig weights.h5) aus.
Sie haben gerade ein neues Modell trainiert, cool! Mal sehen, wie gut es gegen einige Bilder abschneidet, die es noch nie zuvor gesehen hat, über verschiedene Metriken hinweg:
eyeballer.py --weights YOUR_WEIGHTS.h5 evaluate
Die Ausgabe beschreibt die Genauigkeit des Modells sowohl in Bezug auf Sensitivität als auch Präzision für jedes der Programm-Labels. (Einschließlich „keine der oben genannten“ als Pseudo-Label)
| Label | Precision | Recall |
|---|
| Custom 404 | 80,20 % | 91,01 % |
| Login Page | 86,41 % | 88,47 % |
| Webapp | 95,32 % | 96,83 % |
| Old Looking | 91,70 % | 62,20 % |
| Parked Domain | 70,99 % | 66,43 % |