
Rede neural convolucional para análise de capturas de tela de pentest

Dê uma olhada rápida nessas capturas de tela.
Eyeballer é feito para testes de penetração em redes de grande escala, onde você precisa encontrar alvos "interessantes" em um grande conjunto de hosts baseados na web. Use sua ferramenta de captura de tela favorita normalmente (EyeWitness ou GoWitness) e depois execute-as através do Eyeballer para descobrir o que provavelmente contém vulnerabilidades e o que não.
Experimente ao vivo em: https://eyeballer.bishopfox.com
| Sites de Aparência Antiga | Páginas de Login |
|---|---|
![]() | ![]() |
| Aplicação Web | 404 Personalizados |
|---|---|
![]() | ![]() |
| Domínios Estacionados |
|---|
![]() |
Sites de Aparência Antiga Quadros com blocos, CSS quebrado, aquele "je ne sais quoi" de um site que parece ter sido projetado no início dos anos 2000. Você reconhece quando vê. Sites antigos não são apenas feios, eles também são tipicamente super vulneráveis. Quando você está procurando invadir algo, esses sites são uma mina de ouro.
Páginas de Login Páginas de login são valiosas para testes de penetração, indicam que há funcionalidade adicional à qual você não tem acesso atualmente. Também significa que há um processo simples de acompanhamento com ataques de enumeração de credenciais. Você pode pensar que pode definir uma heurística simples para encontrar páginas de login, mas na prática é muito difícil. Sites modernos não usam apenas uma tag de entrada simples que podemos pesquisar.
Aplicação Web Isso indica que há um grupo maior de páginas e funcionalidades disponíveis aqui que podem servir como superfície de ataque. Isso contrasta com uma simples página de login, sem outra funcionalidade. Ou uma página de boas-vindas padrão do IIS que não tem outra funcionalidade. Este rótulo deve indicar que há uma aplicação web aqui para atacar.
404 Personalizado Sites modernos adoram ter páginas 404 personalizadas e fofas com imagens de robôs quebrados ou cachorros tristes. Infelizmente, eles também adoram retornar códigos de resposta HTTP 200 enquanto fazem isso. Mais frequentemente, a página "404" nem contém o texto "404". Essas páginas são tipicamente desinteressantes, apesar de terem muita informação visual, e o Eyeballer pode ajudar a filtrá-las.
Domínios Estacionados Domínios estacionados são sites que parecem reais, mas não são superfície de ataque válida. São páginas de espera, geralmente desprovidas de qualquer funcionalidade real, consistindo quase inteiramente de anúncios, e geralmente não são administradas pelo nosso alvo real. É o que você obtém quando o domínio especificado está errado ou expirou. Encontrar essas páginas e removê-las do escopo é muito valioso ao longo do tempo.
Baixe os pacotes necessários com o pip:
sudo pip3 install -r requirements.txt
Ou se você quiser suporte a GPU:
sudo pip3 install -r requirements-gpu.txt
NOTA: Configurar uma GPU para uso com TensorFlow está muito além do escopo deste README. Há compatibilidade de hardware a considerar, drivers a instalar... É muita coisa. Portanto, você terá que descobrir essa parte por conta própria se quiser uma GPU. Mas pelo menos do ponto de vista dos pacotes Python, o arquivo de requisitos acima cobre você.
Pesos Pré-treinados
Para os pesos pré-treinados mais recentes, confira os lançamentos aqui no GitHub.
Dados de Treinamento Você pode encontrar nossos dados de treinamento aqui:
https://www.kaggle.com/altf42600/pentest-screensots
Você precisa de duas coisas dos dados de treinamento:
images/, contendo todas as capturas de tela (redimensionadas para 224x224)labels.csv que contém todos os rótulosCopie ambos para a raiz da árvore de código do Eyeballer.
Além disso, você pode encontrar um arquivo de pesos pré-treinados que pode usar imediatamente, sem treinamento.
bishop-fox-pretrained-vN.h5Está aqui no GitHub, veja a seção releases para o mais recente.
NOTA: Para melhores resultados, certifique-se de capturar a tela dos seus sites em uma proporção nativa de 1.6x. Exemplo: 1440x900. O Eyeballer redimensionará a imagem automaticamente para o tamanho correto, mas se a proporção estiver errada, ela será comprimida de uma forma que afetará o desempenho da previsão.
Para examinar algumas capturas de tela, execute o modo "predict":
eyeballer.py --weights SEUS_PESOS.h5 predict SEU_ARQUIVO.png
Ou para um diretório inteiro de arquivos:
eyeballer.py --weights SEUS_PESOS.h5 predict CAMINHO/SEUS_ARQUIVOS/
O Eyeballer devolverá os resultados em formato legível por humanos (um arquivo results.html para você navegar facilmente) e em formato legível por máquina (um arquivo results.csv).
O desempenho do Eyeballer é medido em relação a um conjunto de dados de avaliação, que é 20% de todas as capturas de tela selecionadas aleatoriamente. Como essas capturas nunca são usadas no treinamento, elas podem ser uma maneira eficaz de ver o quão bem o modelo está se saindo. Aqui estão os resultados mais recentes:
| Acurácia Binária Geral | 93,52% |
|---|---|
| Acurácia de Tudo-ou-Nada | 76,09% |
Acurácia Binária Geral é provavelmente o que você pensa como "acurácia" do modelo. É a chance, dado qualquer rótulo único, de que ele esteja correto.
Acurácia de Tudo-ou-Nada é mais rigorosa. Para esta, consideramos todos os rótulos de uma imagem e consideramos falha se QUALQUER rótulo estiver errado. Essa classificação de acurácia é a chance de que o modelo preveja corretamente todos os rótulos para qualquer imagem dada.
Para uma explicação detalhada sobre Precisão vs Recall, consulte a Wikipedia.
Para treinar um novo modelo, execute:
eyeballer.py train
Você vai querer uma máquina com uma boa GPU para que isso funcione em um tempo razoável. No entanto, configurar isso está fora do escopo deste README.
Isso produzirá um novo arquivo de modelo (weights.h5 por padrão).
Você acabou de treinar um novo modelo, legal! Vamos ver como ele se sai em algumas imagens que nunca viu antes, em várias métricas:
eyeballer.py --weights SEUS_PESOS.h5 evaluate
A saída descreverá a precisão e o recall do modelo para cada um dos rótulos do programa. (Incluindo "nenhum dos acima" como um pseudo-rótulo)
| Rótulo | Precisão | Recall |
|---|
| 404 Personalizado | 80,20% | 91,01% |
| Página de Login | 86,41% | 88,47% |
| Aplicação Web | 95,32% | 96,83% |
| Aparência Antiga | 91,70% | 62,20% |
| Domínio Estacionado | 70,99% | 66,43% |