
Red neuronal convolucional para analizar capturas de pantalla de pentest

Échale un vistazo rápido a esas capturas de pantalla.
Eyeballer está diseñado para pruebas de penetración de red de gran alcance donde necesitas encontrar objetivos "interesantes" de un gran conjunto de hosts basados en web. Utiliza tu herramienta de captura de pantalla favorita como siempre (EyeWitness o GoWitness) y luego pásalas por Eyeballer para que te diga qué es probable que contenga vulnerabilidades y qué no.
Pruébalo en vivo en: https://eyeballer.bishopfox.com
| Sitios de aspecto antiguo | Páginas de inicio de sesión |
|---|---|
![]() | ![]() |
| Aplicación web | Páginas 404 personalizadas |
|---|---|
![]() | ![]() |
| Dominios estacionados |
|---|
![]() |
Sitios de aspecto antiguo Marcos en bloque, CSS roto, ese cierto "je ne sais quoi" de un sitio web que parece diseñado a principios de los 2000. Lo reconoces cuando lo ves. Los sitios web antiguos no solo son feos, sino que también suelen ser súper vulnerables. Cuando buscas hackear algo, estos sitios web son una mina de oro.
Páginas de inicio de sesión Las páginas de inicio de sesión son valiosas para las pruebas de penetración, indican que hay funcionalidad adicional a la que actualmente no tienes acceso. También significa que hay un proceso de seguimiento simple de ataques de enumeración de credenciales. Podrías pensar que puedes establecer una heurística simple para encontrar páginas de inicio de sesión, pero en la práctica es realmente difícil. Los sitios modernos no usan simplemente una etiqueta de entrada simple que podamos buscar con grep.
Aplicación web Esto te indica que hay un grupo más grande de páginas y funcionalidades disponibles aquí que pueden servir como superficie de ataque. Esto contrasta con una simple página de inicio de sesión, sin otra funcionalidad. O una página de inicio predeterminada de IIS que no tiene otra funcionalidad. Esta etiqueta debería indicarte que hay una aplicación web aquí para atacar.
Páginas 404 personalizadas A los sitios modernos les encanta tener páginas 404 personalizadas y monas con imágenes de robots rotos o perros tristes. Desafortunadamente, también les encanta devolver códigos de respuesta HTTP 200 mientras lo hacen. Más a menudo, la página "404" ni siquiera contiene el texto "404". Estas páginas suelen ser poco interesantes, a pesar de tener mucho contenido visual, y Eyeballer puede ayudarte a filtrarlas.
Dominios estacionados Los dominios estacionados son sitios web que parecen reales, pero no son superficie de ataque válida. Son páginas de relleno, generalmente desprovistas de funcionalidad real, consisten casi en su totalidad en anuncios y, por lo general, no son gestionados por nuestro objetivo real. Es lo que obtienes cuando el dominio especificado es incorrecto o ha caducado. Encontrar estas páginas y eliminarlas del alcance es realmente valioso con el tiempo.
Descarga los paquetes necesarios con pip:
sudo pip3 install -r requirements.txt
O si quieres soporte para GPU:
sudo pip3 install -r requirements-gpu.txt
NOTA: Configurar una GPU para usar con TensorFlow está mucho más allá del alcance de este README. Hay que considerar la compatibilidad del hardware, instalar controladores... Hay mucho. Así que tendrás que resolver esta parte por tu cuenta si quieres una GPU. Pero al menos desde la perspectiva de los paquetes de Python, el archivo de requisitos anterior te cubre.
Pesos preentrenados
Para los últimos pesos preentrenados, consulta los lanzamientos aquí en GitHub.
Datos de entrenamiento Puedes encontrar nuestros datos de entrenamiento aquí:
https://www.kaggle.com/altf42600/pentest-screensots
Hay dos cosas que necesitas de los datos de entrenamiento:
images/, que contiene todas las capturas de pantalla (redimensionadas a 224x224)labels.csv que tiene todas las etiquetasCopia ambos en la raíz del árbol de código de Eyeballer.
Adicionalmente, puedes encontrar un archivo de pesos preentrenados que puedes usar directamente sin entrenar.
bishop-fox-pretrained-vN.h5Está aquí en GitHub, busca en la sección releases la versión más reciente.
NOTA: Para obtener los mejores resultados, asegúrate de capturar la pantalla de tus sitios web en una relación de aspecto nativa de 1.6x. Es decir: 1440x900. Eyeballer escalará la imagen automáticamente al tamaño correcto, pero si la relación de aspecto es incorrecta, se comprimirá de una manera que afectará el rendimiento de la predicción.
Para echar un vistazo a algunas capturas de pantalla, simplemente ejecuta el modo "predict":
eyeballer.py --weights YOUR_WEIGHTS.h5 predict YOUR_FILE.png
O para un directorio completo de archivos:
eyeballer.py --weights YOUR_WEIGHTS.h5 predict PATH_TO/YOUR_FILES/
Eyeballer te devolverá los resultados en un formato legible por humanos (un archivo results.html para que puedas navegarlo fácilmente) y en un formato legible por máquina (un archivo results.csv).
El rendimiento de Eyeballer se mide contra un conjunto de datos de evaluación, que es el 20% de las capturas de pantalla totales elegidas al azar. Dado que estas capturas nunca se usan en el entrenamiento, pueden ser una forma efectiva de ver qué tan bien está funcionando el modelo. Estos son los últimos resultados:
| Precisión Binaria General | 93.52% |
|---|---|
| Precisión de Todo o Nada | 76.09% |
Precisión Binaria General es probablemente lo que piensas como la "precisión" del modelo. Es la probabilidad, dada cualquier etiqueta individual, de que sea correcta.
Precisión de Todo o Nada es más estricta. Para esto, consideramos todas las etiquetas de una imagen y lo consideramos un fallo si CUALQUIER etiqueta es incorrecta. Esta calificación de precisión es la probabilidad de que el modelo prediga correctamente todas las etiquetas para cualquier imagen dada.
Para una explicación detallada sobre Precisión vs Recuperación, consulta Wikipedia.
Para entrenar un nuevo modelo, ejecuta:
eyeballer.py train
Necesitarás una máquina con una buena GPU para que esto se ejecute en un tiempo razonable. Sin embargo, configurar eso está fuera del alcance de este readme.
Esto generará un nuevo archivo de modelo (weights.h5 por defecto).
Acabas de entrenar un nuevo modelo, ¡genial! Veamos qué tan bien se desempeña contra algunas imágenes que nunca ha visto antes, en una variedad de métricas:
eyeballer.py --weights YOUR_WEIGHTS.h5 evaluate
La salida describirá la precisión del modelo tanto en recuperación como en precisión para cada una de las etiquetas del programa. (Incluyendo "ninguna de las anteriores" como una pseudoetiqueta)
| Etiqueta | Precisión | Recuperación |
|---|
| Página 404 personalizada | 80.20% | 91.01% |
| Página de inicio de sesión | 86.41% | 88.47% |
| Aplicación web | 95.32% | 96.83% |
| Aspecto antiguo | 91.70% | 62.20% |
| Dominio estacionado | 70.99% | 66.43% |