GyoiThon是一款基于机器学习的渗透测试工具。GyoiThon根据学习数据识别安装在Web服务器上的软件(操作系统,中间件,框架,CMS等)。之后,GyoiThon为已识别的软件执行有效的攻击。最终,GyoiThon会自动生成扫描结果报告。上述处理均由GyoiThon自动执行。流程如下所示:
第1步:收集HTTP响应
GyoiThon在抓取时会收集目标网站的几个HTTP响应。以下是GyoiThon获取的HTTP响应示例。如:
HTTP/1.1 200 OK Date: Tue, 06 Mar 2018 03:01:57 GMT Connection: close
Content-Type: text/html; charset=UTF-8 Etag: "409ed-183-53c5f732641c0" Content-Length: 15271 ...snip...
第2步:识别产品名称
GyoiThon使用以下两种方法,来识别安装在Web服务器上的产品名称。
1.基于机器学习
通过使用机器学习(朴素贝叶斯),GyoiThon基于每个软件的略微不同的特征(ETAG值、Cookie值、特定HTML标签等)的组合来进行识别。朴素贝叶斯使用以下示例(训练数据)的训练数据来学习。与签名库不同的是,当在一个特征中不能识别软件时,朴素贝叶斯是基于HTTP响应中包含的各种特征随机识别的。如:
Etag: "409ed-183-53c5f732641c0"
GyoiThon可以识别Web服务器软件Apache。
这是因为GyoiThon学习了Apache的特性,例如“Etag头值(409ed-183-53c5f732641c0)”。在我们的研究测试中发现,Apache使用数字和小写字母的组合作为Etag值。并且,Etag值分开4-5位和3-4位和12位,最终位在多数情况下为0。
2.基于字符串匹配。
当然,GyoiThon也可以通过传统渗透测试工具中使用的字符串匹配来识别软件。
第3步:使用Metasploit进行利用
GyoiThon使用Metasploit执行与识别软件相对应的漏洞利用,并检查软件是否受此漏洞影响。
运行示例
[*] exploit/multi/http/struts_code_exec_exception_delegator, target: 1, payload: linux/x86/shell/revers
第4步:生成扫描报告
GyoiThon生成汇总漏洞的报告,报告的样式为html。
Gituhub地址:https://github.com/gyoisamurai/GyoiThon
还有另外一款基于机器学习的全自动渗透工具:Deep Exploit