Eyeballer 用于分析渗透测试屏幕截图的卷积神经网络

图片[1]-Eyeballer 用于分析渗透测试屏幕截图的卷积神经网络

快速浏览一下你的那些截图。

Eyeballer 适用于大范围网络渗透测试,您需要从大量基于 Web 的主机中找到“有趣”的目标。继续使用您最喜欢的屏幕截图工具(EyeWitness 或 GoWitness),然后通过 Eyeballer 运行它们,以告诉您哪些可能包含漏洞,哪些不包含漏洞。

现场尝试一下: https: //eyeballer.bishopfox.com

标签示例

图片[2]-Eyeballer 用于分析渗透测试屏幕截图的卷积神经网络
图片[3]-Eyeballer 用于分析渗透测试屏幕截图的卷积神经网络
图片[4]-Eyeballer 用于分析渗透测试屏幕截图的卷积神经网络

标签的含义

外观老旧的网站 块状框架、破损的 CSS,这些网站看起来就像是 2000 年代初设计的,让人难以捉摸。一看就知道是啥。老旧网站不仅丑陋,而且通常非常脆弱。当您想要入侵某个网站时,这些网站就是金矿。

登录页面 登录页面对于渗透测试来说很有价值,它们表明您目前无法访问其他功能。这也意味着有一个简单的后续凭据枚举攻击过程。您可能认为可以设置一个简单的启发式方法来查找登录页面,但实际上这很难。现代网站不仅仅使用我们可以 grep 的简单输入标签。

Webapp 这告诉您这里有一组更大的页面和功能可供攻击。这与没有其他功能的简单登录页面形成对比。或者没有其他功能的默认 IIS 登录页面。此标签应该会告诉您这里有一个 Web 应用程序可供攻击。

自定义 404 现代网站喜欢制作可爱的自定义 404 页面,其中包含损坏的机器人或悲伤的狗的图片。不幸的是,他们也喜欢在这样做的同时返回 HTTP 200 响应代码。更常见的是,“404”页面甚至不包含文本“404”。这些页面通常很无趣,尽管在视觉上有很多内容,但 Eyeballer 可以帮助您筛选出它们。

停放域名 停放域名是看似真实但并非有效攻击面的网站。它们是替代页面,通常没有任何实际功能,几乎完全由广告组成,并且通常不是由我们的实际目标运行的。当指定的域名错误或失效时,您就会得到这些页面。找到这些页面并将其从范围中删除,从长远来看确实很有价值。

设置

在pip上下载所需的软件包:

sudo pip3 install -r requirements.txt

或者如果您需要 GPU 支持:

sudo pip3 install -r requirements-gpu.txt

注意:设置用于 TensorFlow 的 GPU 远远超出了本自述文件的范围。需要考虑硬件兼容性、安装驱动程序……还有很多。所以如果您想要 GPU,您就必须自己弄清楚这部分。但至少从 Python 包的角度来看,上述要求文件已经涵盖了您的需求。

预训练权重

要了解最新的预训练权重,请查看 GitHub 上的版本。

训练数据您可以在这里找到我们的训练数据:

https://www.kaggle.com/altf42600/pentest-screensots

你需要从训练数据中获得两件事:

  1. images/文件夹,包含所有屏幕截图(调整大小至 224×224)
  2. labels.csv包含所有标签

将两者都复制到 Eyeballer 代码树的根目录中。

此外,您还可以找到一个预先训练的权重文件,无需训练即可直接使用。

  1. bishop-fox-pretrained-vN.h5

它位于 GitHub 上,请查看releases最新部分。

预测标签

注意:为获得最佳效果,请确保以原生 1.6 倍宽高比截取网站截图。即:1440×900。Eyeballer 会自动将图像缩小到适合您的尺寸,但如果宽高比不正确,则图像会挤压,从而影响预测性能。

要查看一些屏幕截图,只需运行“预测”模式:

eyeballer.py --weights YOUR_WEIGHTS.h5 predict YOUR_FILE.png

或者对于整个目录的文件:

eyeballer.py --weights YOUR_WEIGHTS.h5 predict PATH_TO/YOUR_FILES/

results.htmlEyeballer 会以人类可读的格式(文件,以便您轻松浏览)和机器可读的格式(文件)将结果返回给您results.csv

表现

Eyeballer 的性能是根据评估数据集来衡量的,该数据集是随机选择的整体屏幕截图的 20%。由于这些屏幕截图从未用于训练,因此它们可以成为查看模型性能的有效方法。以下是最新结果:

总体二进制准确度93.52%
全有或全无的准确性76.09%

总体二进制准确率可能就是您认为的模型的“准确率”。这是给定任何单个标签时,模型正确的概率。

全有或全无准确度更为严格。为此,我们会考虑图像的所有标签,如果任何标签错误,则视为失败。此准确度评级是模型正确预测任何给定图像的所有标签的可能性。

标签精确记起
自定义 40480.20%91.01%
登录页面86.41%88.47%
Web 应用95.32%96.83%
看起来很老91.70%62.20%
停放域名70.99%66.43%

有关准确率 (Precision) 与召回率 (Recall) 的详细解释,请参阅维基百科

训练

要训​​练新模型,请运行:

eyeballer.py train

您需要一台具有良好 GPU 的机器,以便能够在合理的时间内运行此程序。不过,设置该程序超出了本自述文件的范围。

这将输出一个新的模型文件(默认为weights.h5)。

评估

您刚刚训练了一个新模型,太棒了!让我们看看它在各种指标上对一些从未见过的图像的表现如何:

eyeballer.py --weights YOUR_WEIGHTS.h5 evaluate

输出将描述模型对程序每个标签的召回率和准确率的准确度。(包括“以上都不是”作为伪标签)

国内下载链接

© 版权声明
THE END
喜欢就支持一下吧
点赞88 分享